我有一个窗口,它的 DataContext 绑定到 ViewModel 对象(例如 VM1)。VM1 有很多属性,其中一个是名为“MyTitle”的字符串。
我在“Window\Grid\DataGrid”中有一个 DataGridTextColumn。如何将 DataGridTextColumn 中的属性“Header”绑定到我的 VM1 ViewModel 中的属性“MyTitle”?
谢谢!
我有一个窗口,它的 DataContext 绑定到 ViewModel 对象(例如 VM1)。VM1 有很多属性,其中一个是名为“MyTitle”的字符串。
我在“Window\Grid\DataGrid”中有一个 DataGridTextColumn。如何将 DataGridTextColumn 中的属性“Header”绑定到我的 VM1 ViewModel 中的属性“MyTitle”?
谢谢!
不幸的是, 的列定义DataGrid
不继承DataContext
,因为它们不是可视树的一部分,因此您不能直接绑定到 ViewModel。您需要采用一种解决方法,例如本文中描述的解决方法:
<DataGrid.Resources>
<local:BindingProxy x:Key="proxy" Data="{Binding}" />
</DataGrid.Resources>
...
<DataGridTextColumn Header="{Binding Data.MyTitle, Source={StaticResource proxy}}"/>
接受的答案对我不起作用。
我能够完成这项工作。
<FrameworkElement x:Name="proxy" DataContext="{Binding}"/>
<DataGridTextColumn Header="{Binding Source={x:Reference proxy}, Path=DataContext.MyTitle}/>