アイテムのコレクションを提供する ViewModel があります。ActiveItem プロパティもあります。Items コレクションには、ActiveItem が含まれる場合と含まれない場合があります。
(XAML で) やりたいことは、アイテムをリストとして表示し、アクティブなアイテムと等しいアイテムを強調表示することです。
次のことを試しましたが、成功しませんでした:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<Border x:Name="outerBorder" Background="Green">
<TextBlock Text="{Binding ItemId}" />
</Border>
<DataTemplate.Triggers>
<DataTrigger
Binding="{Binding
Path=DataContext.Item.ItemId,
RelativeSource={RelativeSource TemplatedParent},
Mode=Default}"
Value="{Binding
Path=DataContext.ActiveItem.ItemId,
RelativeSource={RelativeSource AncestorType=Window},
Mode=Default}"
>
<Setter TargetName="outerBorder"
Property="Background" Value="Orange" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
ご覧のとおり、現在のアイテムを ActiveItem と一致させるために DataTrigger を使用しようとしましたが、うまくいきません。これは、DataTrigger.Value で Binding を使用しようとしていることに関係していると思います。他の例は見たことがありません。
これを機能させる方法はありますか?
ありがとう、
ダニエル