26

すべて、私はWPFに比較的慣れていません。私はこれに対する答えを探し回っていましたが、私が見つけたのは、列ではなく実行時に行を色付けする方法だけです。たとえば、次の質問:

  1. WPFデータグリッドの行の色を変更する

  2. WPFでデータグリッドの行の色をプログラムで変更するにはどうすればよいですか?

  3. DataGridの行にプログラムで色を割り当てる

  4. 値に基づいてDataGridセルの色を変更する

etal。

私はMSDNDataGridページCellStyleでプロパティを見ましたが、これについても検索したにもかかわらず、その使用法は私にはまったくわかりません。

実行時に列全体の背景色を変更するにはどうすればよいですか?

御時間ありがとうございます。

4

2 に答える 2

28

私がそれを機能させる唯一の方法は、(自動生成を使用せずに)自分で列を設定することです。したがって、最初に行うことは、列を定義することです。

<DataGrid x:Name="Frid" ItemsSource="{Binding Path=.}">
        <DataGrid.Columns>
            <DataGridTextColumn Header="First Name" 
                                Binding="{Binding Path=FirstName}">

            </DataGridTextColumn>

            <DataGridTextColumn Header="Last Name" 
                                Binding="{Binding Path=LastName}">

            </DataGridTextColumn>
        </DataGrid.Columns>
    </DataGrid> 

次に、各列のCellStyleを設定し、Window.Resourcesで宣言できる静的リソースにBackgroundをバインドする必要があります。

<Window x:Class="WpfApplication1.MainWindow" ...>
<Window.Resources>
    <SolidColorBrush x:Key="clBr" Color="White" />
</Window.Resources>
...

列:

                <DataGridTextColumn Header="First Name" 
                                    Binding="{Binding Path=FirstName}">
                <DataGridTextColumn.CellStyle>
                    <Style TargetType="DataGridCell">
                        <Setter Property="Background" 
                                Value="{StaticResource clBr}" />
                    </Style>
                </DataGridTextColumn.CellStyle>
            </DataGridTextColumn>

次に、コードまたはxaml操作のいずれかによって静的リソースを操作できます。

それが役に立てば幸い。

于 2013-03-26T22:50:36.623 に答える
18

少し古いですが、これをプログラムで実行する方法は次のとおりです(AutoGen列の場合)。

private void dgvMailingList_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    e.Column.CellStyle = new Style(typeof(DataGridCell));
    e.Column.CellStyle.Setters.Add(new Setter(DataGridCell.BackgroundProperty,  new SolidColorBrush(Colors.LightBlue)));
}

同じアプローチは、AutoGen以外の列にも適用できます。

于 2014-02-10T06:21:57.633 に答える