WPF をさらに掘り下げるにつれて、少し混乱し始めています。この例は、物事をよりよく理解するのに役立つと思います。私の要件は次のとおりです。プレーンな .NET オブジェクトのコレクションへのバインディングを使用している ListView があり、次の 2 つのことを行います。
1)値が特定の値の場合、ListViewの行のセルを強調表示します-これにGridViewColumn.CellTemplateを使用し、DataTriggerでDataTemplateを作成できると思いますが、ここで混乱しています-は、 DataTemplate は ListViewItem であるはずですか、それとも基になるオブジェクト自体のタイプであるはずですか?
これは、WPF で私が混乱する一般的なポイントです..基礎となるコレクション オブジェクト (例で見た) とリスト項目タイプ自体にいつ入力するかわからない. これが私の最初の試みです:
<GridViewColumn Header="Position">
<GridViewColumn.CellTemplate>
<DataTemplate DataType="{x:Type ListViewItem}">
<TextBlock Text="{Binding Path=PositionCode}"></TextBlock>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding PositionCode}" Value="QB">
<Setter Property="Foreground" Value="Blue" />
</DataTrigger>
<DataTrigger Binding="{Binding PositionCode}" Value="RB">
<Setter Property="Foreground" Value="Green" />
</DataTrigger>
<DataTrigger Binding="{Binding PositionCode}" Value="WR">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
ただし、これは驚くべきことではありませんが、エラーメッセージが表示されます
Cannot find the Template Property 'Background' on the type 'System.Windows.Controls.ContentPresenter'
2) 1) と同様に、別の基準に同様のルールを適用したい 同様の DataTrigger プロパティに基づくセルだけでなく、行全体を強調表示したいが、同時にセルの強調表示を行の強調表示よりも優先させたい.
これを行うにはどうすればよいですか?また、これを行うにはどのテンプレートをオーバーライドする必要がありますか? ListView.ItemTemplate だと思いますが、データ型は何でしょうか?