这就是我想要完成的事情:
<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