3

WPF Datagrid の最初の行 (のみ) のスタイルを変更したいのですが、その方法が見つかりません。次のようなトリガーを作成することについて疑問に思いました。

<Style TargetType="{x:Type dg:DataGridRow}">
    <Style.Triggers>
        <Trigger Property="SelectedIndex" Value="0">
            <Setter Property="Background" Value="Red"/>
        </Trigger>
    </Style.Triggers>
</Style>

しかしもちろん、DataGridRow には「SelectedIndex」プロパティがないため、これは機能しません。コードビハインドでこれを行う試みもいくつかありましたが、機能させることができませんでした。

かなり単純なことのように思えますが、私はそれを管理できていないので、アドバイスをいただければ幸いです。

ありがとう、ウィル

4

2 に答える 2

1

Style オブジェクトまたは単なる文字列表現 (つまり、スタイルの名前) として Style を返す IValueConverter を作成できる場合があります。次に、DataGrid のスタイル プロパティをコンバーターにバインドし、基になるアイテムのリストをパラメーターとして渡して、現在のアイテムのインデックスを決定できますか?

コンバーターは次のようになります...

public class StyleConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        Style style1 = App.Current.FindResource("RowStyle1") as Style;
        Style style2 = App.Current.FindResource("RowStyle2") as Style;

        List<object> items = parameter as List<object>;

        if (items[0] == value)
        {
            return style1;
        }

        return style2;
    }
}

これが機能するかどうかはわかりませんが、おそらく私もうまく説明できていません!

私は今興味があります、私はこれを試してみて、うまくいくかどうか見てみましょう!

于 2009-12-07T14:03:56.023 に答える
0

これを行う方法はわかりませんが、行をフリーズすることは可能です。それはあなたのニーズに合っていますか?次のリンクのコードは、スタイルを適用できるように特定の行にアクセスする方法に関する解決策につながる可能性があります。

http://blogs.msdn.com/vinsibal/archive/2008/10/31/wpf-datagrid-frozen-row-sample.aspx

于 2009-09-30T21:44:23.943 に答える