【解決方法】Datagridtemplatecolumn.headertemplate バインディングが機能しない


チェックボックス列と許可列の 2 つの列を持つ DataGrid があります。 新しいモードでは、ユーザーがヘッダーのすべてのチェックボックスを選択すると、すべての子のチェックボックスが選択され、その逆も同様です (このロジックは現在機能しています)。 編集モードでは、アプリケーションはすべての権限が選択されているかどうかを確認し、チェックボックスもすべて選択されています。 現在、コード ビハインドで bool 変数 is IsCheckAll を定義し、すべての権限が選択されている場合は True を設定し、この変数を次のコードとしてバインドしていますが、機能していません。

私のデータグリッドの画像

マイ XAML

HTML
<DataGrid x:Name="grPermission" HorizontalAlignment="Stretch"  VerticalAlignment="Stretch" IsReadOnly="True" AutoGenerateColumns="False" >
    <DataGrid.RowStyle>
        <Style TargetType="DataGridRow">
        </Style>
    </DataGrid.RowStyle>
    <DataGrid.Columns>
        <DataGridTemplateColumn Width="40">
            <DataGridTemplateColumn.HeaderTemplate>
                <DataTemplate>
                    <CheckBox x:Name="CheckBoxAllPermission"
                              IsChecked="{Binding IsCheckAll}"
                              Checked="CheckAllPermisson"
                              Unchecked="UnCheckAllPermisson">
                    </CheckBox>
                </DataTemplate>
            </DataGridTemplateColumn.HeaderTemplate>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox x:Name="CheckBoxPermission"
                              IsChecked="{Binding Path=CheckBox,
                              UpdateSourceTrigger=PropertyChanged,
                              Mode=TwoWay}">
                    </CheckBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Header="Permission" Binding="{Binding
                            PermissionName}" Width="*" />
    </DataGrid.Columns>
</DataGrid>

コードビハインド

C#
public bool IsCheckAll { get; set; }

// do some code
IsCheckAll = lstPermissions.Any(x => x.CheckBox == false) ? false : true;
grPermission.ItemsSource = lstPermissions;

私が試したこと:

誰かが解決策を見つけて、それを解決するように教えてくれませんか。

コメント

タイトルとURLをコピーしました