【发布时间】:2014-01-27 11:43:27
【问题描述】:
我有一个 MVVM Windows Phone 8 应用程序。 XAML 页面有一个我创建的用户控件,当View Model 中发生更改时需要通知该控件。为了方便这一点,我在 user control 中创建了一个 int 属性来绑定到 View Model 中的一个属性,所以 用户控件属性的setter方法会在View Model中绑定的属性发生变化时触发。
使用下面的代码,用户控件的 VideosShownCount 属性确实会在设计时显示在 Property List 中,但是当我点击绑定小按钮,创建数据绑定选项在弹出菜单中灰显。
所以我有一两个问题,取决于根本问题是什么:
1) 如何使 视图模型 中的属性可用作数据绑定源?
2) 如何格式化 用户控件 属性,以便 IDE 允许将其数据绑定到 View Model 属性?
private int _videosShownCount = 0;
public int VideosShownCount
{
get
{
return this._videosShownCount;
}
set
{
this._videosShownCount = value;
}
}
public static readonly DependencyProperty VideoShownCountProperty =
DependencyProperty.Register("VideosShownCount", typeof(int), typeof(MyUserControl),
new PropertyMetadata(0, new PropertyChangedCallback(VideoShownCountPropertyChanged)));
static void VideoShownCountPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
MyUserControl MyUserUserControl = (MyUserControl)sender;
// Don't care about the value, just want the notification.
// int val = (int)e.NewValue;
// Do work now that we've been notified of a change.
MyUserUserControl.DoWork();
}
【问题讨论】:
-
在创建依赖属性时最好输入'propdp'然后点击tab
-
@ShawnKendrot - 好提示。关于我为什么遇到数据绑定问题的任何想法?
-
不知道,我创建了一个新的 UserControl,添加了一个新的 dp MyProperty(只使用了除 ownerType 之外的所有默认值),编译,将控件添加到 PhoneApplicationPage 中的网格中,创建数据绑定是已启用。
-
@ShawnKendrot 您是否在用户控件中明确设置数据上下文?
-
不在我使用的示例应用程序中。它是在 InitializeComponent 之后在 ctor 中设置的
标签: c# .net data-binding mvvm dependency-properties