Я создал таблицу данных, которая содержит 4 столбца, 3 строки и еще один логический тип. я сопоставил datatable (xmldatadocument) с datagridview в wpf. таким образом, в результате получается текстовый столбец и столбец флажка в сетке данных. И я добавил шаблон заголовка флажка в заголовок столбца флажка. Я могу снять все флажки в столбце, когда флажок в заголовке не установлен. Я также могу выполнить проверку всех флажков в столбце, когда установлен флажок заголовка заголовка. Но я немного обеспокоен тем, что если один из флажков в этом столбце не отмечен, мне также нужно снять флажок заголовка. Пожалуйста, помогите мне решить это. Я добавил скриншот, XAML и код ниже.
PS: с использованием сетки данных WPF.
<dg:DataGrid.Columns>
<dg:DataGridCheckBoxColumn Binding="{Binding Check}" Width="50" >
<dg:DataGridCheckBoxColumn.HeaderTemplate>
<DataTemplate x:Name="dtAllChkBx">
<CheckBox Name="cbxAll" Content="{x:Static properties:Resources.lblAll}" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"></CheckBox>
</DataTemplate>
</dg:DataGridCheckBoxColumn.HeaderTemplate>
public static ObservableCollection<Lst> list = new ObservableCollection<Lst>();
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
for (int i = 0; i < list.Count; i++)
{
list[i].Check = true;
}
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
for (int i = 0; i < list.Count; i++)
{
list[i].Check = false;
}
}
public class Lst : ObservableCollection<Lst>
{
public bool Check { get; set; }
}
INotifypropertyChanged
в свой классLst
. Также почитайте что-нибудь наMVVM
. Ваш сеттер в вашем классеLst
не имеетChange notification
INotifyPropertyChnaged
даст вам событие, которое вы можете вызвать в сеттере в вашемProperty
Check
. И да, в таких случаях мы обычно не используем свойство `Auto. Пожалуйста, измените на свойство с резервным полем. - person Ankesh   schedule 23.04.2012