2

WPF DataGridコントロールから継承し、さまざまなオブジェクトのリストを渡すユーザーコントロールがあるため、グリッドの列は、送信するオブジェクトのクラスに依存します(つまり、自動的に生成されます)。

<userc:cfDataGrid x:Name="grdResults" 
    FontStyle="Normal" 
    FontFamily="Microsoft Sans Serif" 
    FontSize="14" 
    RowHeight="30"  

    AutoGenerateColumns="True" 
    Margin="12" 
    AlternatingRowBackground="Gainsboro"  
    AlternationCount="2" 

    ItemsSource="{Binding Results}" 
    IsReadOnly="True" 
    HeaderNames="{Binding Headers}" >
</userc:cfDataGrid> 

ここで、SolidColorBrushデータ型の属性を持つオブジェクトのリストも渡し、この値を使用して、実際の値を表示するのではなく、セルの背景色を設定できるようにしたいと思います。

私はスタイルなどであまり作業を行っていないので、列の名前に依存せずに、SolidColorBrushデータ型で列をトラップする方法(および上記のアクションを実行する方法)について誰かが私にいくつかのポインターを教えてくれるかどうか尋ねたいと思いました。

どんなポインタでも大歓迎です!

CC

4

1 に答える 1

7

オブジェクトが であるかどうかを確認するためにConverterを使用するDataTriggerを使用し、そうであれば背景色を設定しますSolidColorBrush

このようなもの:

<DataGrid.Resources>
    <Style TargetType="{x:Type DataGridCell}">
        <Style.Triggers>
            <!-- DataContext will be object for entire data row -->
            <DataTrigger Binding="{Binding MyBrushColorProperty, Converter={StaticResource IsSolidBrushColor}}" Value="True">
                <Setter Property="Background" Value="{Binding MyBrushColorProperty}" />
                <Setter Property="Content" Value="" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</DataGrid.Resources>
于 2013-02-01T14:23:00.027 に答える