我试图将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/

10-12 00:24
查看更多