我试图将ViewModel属性绑定(bind)到DataGrid header 中的复选框。
如果我将复选框随机粘贴在窗口中,则该复选框可以很好地进行绑定(bind),但是如果它位于datagrid的标题中,则不会在任何方向上进行绑定(bind)。
DataGrid中的数据也可以很好地绑定(bind)。
问题似乎是HeaderTemplate没有绑定(bind)到主 View 模型。我假设其绑定(bind)ItemSource。
如何绑定(bind)到标题中的 View 模型?
<DataGrid ItemsSource="{Binding Channels}" AlternationCount="2" Grid.IsSharedSizeScope="True" AutoGenerateColumns="False" AlternatingRowBackground="{StaticResource GroupBackgroundBrush}" SelectedIndex="{Binding Path=CursorChannelInt}" >
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=Test}">Test Chkbox</CheckBox>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=stuff}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
最佳答案
通过转到Window,获取其DataContext,然后从那里开始,该方法可以工作。有没有更好的办法?
<CheckBox IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.Test}">Test Chkbox</CheckBox>
关于c# - DataGrid header 中的WPF DataBinding,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25396216/