8

我有一个窗口,它的 DataContext 绑定到 ViewModel 对象(例如 VM1)。VM1 有很多属性,其中一个是名为“MyTitle”的字符串。

我在“Window\Grid\DataGrid”中有一个 DataGridTextColumn。如何将 DataGridTextColumn 中的属性“Header”绑定到我的 VM1 ViewModel 中的属性“MyTitle”?

谢谢!

4

2 回答 2

24

不幸的是, 的列定义DataGrid不继承DataContext,因为它们不是可视树的一部分,因此您不能直接绑定到 ViewModel。您需要采用一种解决方法,例如本文中描述的解决方法:

<DataGrid.Resources>
    <local:BindingProxy x:Key="proxy" Data="{Binding}" />
</DataGrid.Resources>

...

<DataGridTextColumn Header="{Binding Data.MyTitle, Source={StaticResource proxy}}"/>
于 2013-06-06T15:15:43.443 回答
1

接受的答案对我不起作用。

我能够完成这项工作。

<FrameworkElement x:Name="proxy" DataContext="{Binding}"/>

<DataGridTextColumn Header="{Binding Source={x:Reference proxy}, Path=DataContext.MyTitle}/>
于 2020-12-28T17:02:00.647 回答