3

私はSOを見てきましたが、探しているものに対する正確な答えは見つかりませんでした。データ ソースにバインドされた DataGrid ビューがあります。データグリッドを含むウィンドウが表示された後、プログラムで列のスタイルを設定したいと考えています。また、何らかの動作に基づいて時々変更したいと考えています。

DataGridTemplateColumn を使用しようとしましたが、実行するたびにそれらの列からデータが削除されます。また、リソースからセル スタイルを取得しようとしてもセル スタイルを取得できません (つまり、常に null です)。

        private void StyleColumns()
    {
        // Replace the DueDate column with a custom template column.
        for (int i = 0; i < 7; i += 2)
        {
            // Create a new template column.
            DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
            templateColumn.Header = m_DataGrid.Columns[i].Header;
            Style style = new Style();
            templateColumn.CellStyle = (Style)Resources["ColumnGone"];
            // ...
            // Replace the auto-generated column with the templateColumn.
            m_DataGrid.Columns[i] = templateColumn;
        }
    }

XAMLはこのようなものです

                        <DataGrid AutoGenerateColumns="True" x:Name="m_grfFileDataGrid" ItemsSource="{Binding cb.GRF}"
                              RowHeight="20" ColumnWidth="*"
                              AlternatingRowBackground="Beige"
                              SelectionUnit="CellOrRowHeader"
                              FontFamily="Consolas"
                              FontSize="12"
                              CanUserReorderColumns="False"
                              CanUserSortColumns="False"
                              CanUserAddRows="False"
                              CanUserDeleteRows="False">
                        <DataGrid.Resources>
                            <Style TargetType="DataGridCell" x:Key="ColumnGone">
                                <Setter Property="Background" Value="SeaGreen"/>
                            </Style>
                            <Style x:Key="DisabledColumn">
                                <Setter Property="DataGridColumn.CanUserResize"
                                        Value="False" />
                                <Setter Property="DataGridColumn.CanUserSort"
                                        Value="False" />
                                <Setter Property="DataGridColumn.CanUserReorder"
                                        Value="False" />
                                <Setter Property="DataGridColumn.CellStyle"
                                        Value="{StaticResource ColumnGone}" />
                            </Style>
                        </DataGrid.Resources>
                    </DataGrid>

これに関する助けをいただければ幸いです。ありがとう

4

2 に答える 2