我有一个MVVM Windows Phone 8应用程序。 XAML页面包含我创建的用户控件,需要在查看模型中进行更改时收到通知。为此,我在用户控件中创建了一个 int 属性,以绑定到 View Model 中的属性,因此当视图模型中绑定的属性发生更改时,将触发用户控件属性的 setter 方法。
使用下面的代码,用户控件的 VideosShownCount 属性会在设计时显示在属性列表中,但是当我点击时弹出菜单中的绑定迷你按钮创建数据绑定选项灰显。
所以我有一两个问题,具体取决于根本问题:
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();
}
答案 0 :(得分:1)
您没有将DependencyProperty
用于您的媒体资源,这肯定会导致您的代码和绑定之间出现问题
public int VideosShownCount
{
get { return (int) GetValue(VideosShownCountProperty); }
set { SetValue(VideosShownCountProperty, value); }
}
我不确定这是否是导致问题的主要原因,但无论如何都值得修复。