Silverlight:Label不评估自定义DependencyProperty的绑定

时间:2009-10-12 14:42:57

标签: silverlight label dependency-properties

我有一个Silverlight 3标签,我使用Label的Target属性连接到ComboBox。根据MSDN,Label类遍历目标绑定并搜索元数据的源以确定标签的内容。

只要目标是标准控件,这实际上就有效。但是,如果我使用自定义控件,在我的情况下扩展ComboBox,并引入一个新的DependencyProperty,它就会被忽略。

E.g。这有效:

<dataInput:Label Grid.Row="3" Grid.Column="0"
             Target="{Binding ElementName=cbxCountry}"
             VerticalAlignment="Center"/>
<ComboBox x:Name="cbxCountry" DisplayMemberPath="Name"
      SelectedItem="{Binding DataModel.Country, Mode=TwoWay}"
      ItemsSource="{Binding Countries, Source={StaticResource ApplicationData}}"/>

在上面的示例中,搜索SelectedItem Binding,DataModel.Country包含所采用的DisplayName。

但这不是:

<dataInput:Label Grid.Row="3" Grid.Column="0"
             Target="{Binding ElementName=cbxCountry}"
             VerticalAlignment="Center"/>
<local:MyComboBox x:Name="cbxCountry" DisplayMemberPath="Name"
      MySelectedItem="{Binding DataModel.Country, Mode=TwoWay}"
      MyItemsSource="{Binding Countries, Source={StaticResource ApplicationData}}"/>

自定义属性是依赖属性,并声明为follws:

private static readonly DependencyProperty MySelectedItemProperty =
                             DependencyProperty.Register("MySelectedItem",
                             typeof(object), typeof(MyComboBox),
                             new PropertyMetadata(null,
                                 MySelectedItemPropertyChanged));

我知道我可以通过在Label上定义PropertyPath来解决这个问题,但如果可能的话,我宁愿避免这种情况。

所以现在我的问题是,任何人都可以重现这个问题,当然更重要的是,有人知道如何解决它吗? : - )

谢谢Markus

1 个答案:

答案 0 :(得分:0)

好的,如果有人遇到同样的问题,这就是解决方案:只需将DependencyProperty的可见性从私有更改为公共。

实际上很明显......: - /