繁体   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