いくつかのボタンを表示する ItemsControl コントロールがあります。ボタンの 1 つをクリックすると、選択したリソース (ボタンにバインドされている) の詳細を表示する必要があります。
ボタンがクリックされると、ViewModel に SelectedResource というプロパティを設定します。
私がやりたいのは、クリックされたボタンを強調表示することです。
次のように、ボタンの ControlTemplate があります。
<ControlTemplate x:Key="ResourceButtonTemplate" TargetType="{x:Type ButtonBase}">
<Border Name="SelectedButtonBorder"
CornerRadius="3">
<Border x:Name="border"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="3"
Background="{TemplateBinding Background}"
SnapsToDevicePixels="True">
<StackPanel Orientation="Horizontal" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
<Image Source="{Binding Type.Value, Converter={converter:ResourceTypeToStringConverter}}"></Image>
<ContentPresenter x:Name="contentPresenter"
ContentTemplate="{TemplateBinding ContentTemplate}"
Content="{TemplateBinding Content}"
ContentStringFormat="{TemplateBinding ContentStringFormat}"
Focusable="False"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</StackPanel>
</Border>
</Border>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding SelectedResource}" Value="">
<Setter TargetName="SelectedButtonBorder" Property="BorderBrush" Value="Red" />
<Setter TargetName="SelectedButtonBorder" Property="BorderThickness" Value="2" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
DataTrigger を試しましたが、datatrigger の value プロパティをバインドできません。
では、XAML のみを使用してそれを行う方法はありますか?
編集:
SelectedResource を空の文字列と比較したくありません。実際に何と比較すればよいかわかりません。SelectedResource オブジェクトのプロパティの 1 つと、ボタンに表示されるテキストを比較してみました。