带有DependencyObject绑定的WPF UserControl

时间:2013-12-06 17:45:47

标签: c# wpf user-controls

这就是我想要完成的事情:

<ctrl:MyControl x:Name="mc">
    <ctrl:MyControl.MyData>
        <ctrl:MyDataCollection>
            <ctrl:MyData MyProperty="{Binding PropertyA}"/>
            <ctrl:MyData MyProperty="{Binding PropertyB}"/>
        </ctrl:MyDataCollection>
    </ctrl:MyControl.MyData>
</ctrl:MyControl>

MyDataCollection就是:

public class MyDataCollection : List<MyData>
{
};

和MyData:

public class MyData : DependencyObject
{

    public MyData()
    {

    }

    public double MyProperty
    {
        get { return (double)GetValue(MyPropertyProperty); }
        set { SetValue(MyPropertyProperty, value); }
    }

    public static readonly DependencyProperty MyPropertyProperty =
        DependencyProperty.Register("MyProperty", typeof(double), typeof(MyData), new PropertyMetadata(0.0));
}

MyCotrol包含MyDataCollection的DependencyProperty。 现在到了这一点。使用MyData正确填充MyDataCollection,问题在于MyData中的MyProperty没有绑定(MyProperty得到默认值)。如果我手动设置它(例如MyProperty =“5”),一切正常。

我的MVVM实现了INotifyPropertyChanged,它有两个属性,PropertyA和PropertyB,并被设置为MyControl的DataContext。

我缺少什么想法?我能够使用UserControl执行此操作,但我无法使用UserControl中的DependencyObject。

编辑:

我在MyControl中添加了依赖属性,然后我做了:

<ctrl:MyControl x:Name="mc" TestProperty ="{Binding PropertyA}">
    <ctrl:MyControl.MyData>
        <ctrl:MyDataCollection>
            <ctrl:MyData MyProperty="{Binding PropertyB}"/>
        </ctrl:MyDataCollection>
    </ctrl:MyControl.MyData>
</ctrl:MyControl>

它适用于TestProperty。

输出面板出错:

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element

0 个答案:

没有答案