模型对象上的Silverlight绑定:无法使其工作

时间:2010-02-18 16:19:47

标签: c# silverlight

我有以下场景(我正在使用Silverlight4 Beta):

UserControl A:      - > DataContext是MyModel类的对象,它包含属性Property01(CustomClass),Property02(CustomEnum)。 MyModel类实现了INotifyPropertyChanged,并且所有属性都在调用时调用PropertyChanged事件。

UserControl B:      - > DataContext必须是类型的对象(CustomClass)      - >类型为(CustomEnum)的DependencyProperty MyProperty

我的UserControlA将包含一个UserControlB,我想以下列方式绑定属性(来自XAML):

-> UserControlB.DataContext = UserControlA.DataContext.Property01
-> UserControlB.MyProperty = UserControlA.DataContext.Property02

<!-- DataContext = MyModel -->
<Grid x:Name="LayoutRoot">

    <foo:UserControlB x:Name="xpto" DataContext="{Binding Property01}" MyProperty="{Binding Property02}" />

</Grid>

如上所述,将UserControlB的DataContext设置为正确的值,但UserControlB.MyProperty上的绑定永远不会发生。 如果我删除语句DataContext =“{Binding Property01}”,那么将发生对UserControlB.MyProperty的绑定。

如果我做的事情再次符合Silverlight的普遍规律,有人可以解释一下: - )

非常感谢, 布鲁诺

1 个答案:

答案 0 :(得分:1)

您的XAML设置方式目前是绑定:

-> UserControlB.DataContext = UserControlA.DataContext.Property01
-> UserControlB.MyProperty = UserControlB.DataContext.Property02

方式:

MyProperty="{Binding Property02}"

Works就是说我的DataContext上的属性“Property02”绑定了,如果我没有DataContext检查我的父DataContext,那么直到它找到一个DataContext为止。

如果DataContext没有名为“Property02”的属性,它不会继续在树上继续