【发布时间】:2018-06-11 15:27:47
【问题描述】:
考虑一下这个 XAML:
<UserControl>
<TextBlock Text="{Binding NestedObject.Name}" TextWrapping="Wrap"/>
<DataGrid DataContext="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding NestedObject.Name}" />
</DataGrid.Columns>
</DataGrid>
</UserControl>
在TextBlock 的情况下,对象属性会正确显示,但在DataGrid 中使用它时,不会显示任何内容。
这很奇怪,因为我在两种情况下都以相同的方式调用它,并且我认为当没有指定数据上下文时,它会回退到父数据上下文。
我在声明中遗漏了什么吗?
注意
我在 MainWindow 中使用UserControl,并将一个具有 NestedObject 属性的对象分配给它的数据上下文。此外,Name 正在实现 INotifyPropertyChanged。
【问题讨论】:
-
如果 UserControl 的 DataContext 中有 SomeObject 的实例,
Binding SomeObject.Name将不起作用,除非 SomeObject 本身有 SomeObject 属性。 -
@Clemens 你说得对,我的错,我会编辑澄清这不是我想说的。
-
@Clemens 这里改了命名,希望能澄清一下