[英]How do I make a C# user control property data bindable?
我有一個MVVM Windows Phone 8應用程序。 XAML頁面具有我創建的用戶控件 ,在視圖模型中發生更改時需要通知該控件 。 為方便起見,我在用戶控件中創建了一個int屬性以綁定到View Model中的一個屬性,因此,當在View Model中綁定到該控件的屬性時,將觸發該用戶控件屬性的setter方法。
使用下面的代碼, 用戶控件的 VideosShownCount屬性確實在設計時顯示在“ 屬性列表”中 ,但是當我單擊綁定微型按鈕時,彈出菜單中的“ 創建數據綁定”選項顯示為灰色 。
所以我有一個或兩個問題,這取決於根本問題是什么:
1)如何使視圖模型中的屬性可用作數據綁定源?
2)如何格式化用戶控件屬性,以便IDE允許將其綁定到視圖模型屬性的數據?
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();
}
您沒有為屬性使用DependencyProperty
,這肯定會導致代碼與綁定之間出現問題
public int VideosShownCount
{
get { return (int) GetValue(VideosShownCountProperty); }
set { SetValue(VideosShownCountProperty, value); }
}
我不確定這是否是造成問題的主要原因,但是無論如何都值得修復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.