将自定义控件上的新属性绑定到视图模型

时间:2009-07-22 03:33:38

标签: wpf data-binding mvvm custom-controls dependency-properties

如何扩展现有控件(在我的情况下为ComboBox)以包含一个新属性,我可以绑定到我的视图模型上的属性?

我在控件的类上有一个Dependancy属性,如下所示:

public class MyComboBox : ComboBox
{
    public static readonly DependencyProperty MyTextProperty =
        DependencyProperty.Register("MyText", typeof(string), typeof(MyComboBox));

    public string MyText
    {
        get
        {
            return GetValue(MyComboBox.MyTextProperty).ToString();
        }

        set
        {
            SetValue(MyComboBox.MyTextProperty, value);             
        }
    }

并希望从XAML以声明方式绑定到它:

<MyComboBox MyText="{Binding MyTextOnViewModel,
    UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>  

Binding只是不起作用,任何想法为什么?

感谢。

1 个答案:

答案 0 :(得分:2)

当属性声明为MyTextProperty时,getter和setter引用TestTextProperty。

你的getter也应该是强制转换而不是调用.ToString()

return (string)GetValue(MyTextProperty);

有关更完整的说明,请参阅此page