之前提出的这个问题有所不同。
我通过将CheckBox放在DatagridTemplateColumn的Header部分中来检查CellTemplate中的所有CheckBox,来实现“卖所有”方案。
令我惊讶的是,当我在CellTemplate部分中放置绑定时,例如
IsChecked =“ {绑定IsChecked,ElementName = headerCheckBox,Mode = OneWay}”
它工作正常,但是当我反向操作时,例如,将绑定放在HeaderTemplate中,例如
IsChecked =“ {Binding IsChecked,ElementName = chkSelectAll,= OneWay}”
CellTemplate中的CheckBoxes未被选中。
有没有代码的想法吗?
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
>
<Window.Resources>
<col:SortedList x:Key="DummyEntries">
<sys:String x:Key="1">Line 1</sys:String>
<sys:String x:Key="2">Line 2</sys:String>
<sys:String x:Key="3">Line 3</sys:String>
<sys:String x:Key="4">Line 4</sys:String>
<sys:String x:Key="5">Line 5</sys:String>
</col:SortedList>
</Window.Resources>
<Grid>
<DataGrid Width="300" AutoGenerateColumns="False" EnableRowVirtualization="True"
ItemsSource="{Binding Source={StaticResource DummyEntries}}" RowDetailsVisibilityMode="VisibleWhenSelected" ScrollViewer.CanContentScroll="True">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<CheckBox Content=" Slect All- Option 1" x:Name="headerCheckBox" />
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkSelectAll" IsChecked="{Binding IsChecked, ElementName=headerCheckBox, Mode=OneWay}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<CheckBox Content=" Slect All - Option 2" IsChecked="{Binding IsChecked, ElementName=chkSelectAll,
Mode=OneWay}" />
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkSelectAll" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>