簡體   English   中英

如何使C#用戶控件屬性數據可綁定?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM