スタック パネルに TextBlock と 2 つのパス オブジェクト (上矢印と下矢印) があります。TextBlock は「Change」というプロパティにバインドされ、-1、0、1 などの値を持つ可能性があります。
問題 1 の場合は上向き矢印を、-1 の場合は下向き矢印を、0 の場合はこれらの Path オブジェクトのどちらも表示しないようにしたいと考えていました。
これを実現するために、Path タイプに Style Trigger を定義しました。
質問
私はそれを働かせることができません。私は何かが足りないのですか、それともこれを行うより良い方法がありますか?
XAML
<StackPanel Orientation="Horizontal">
<TextBlock Name="changeLbl" Margin="0,0,10,0" Text="{Binding Path=Change}"/>
<Path Fill="{Binding ElementName=changeLbl,Path=Foreground}" Style="{StaticResource downChangePathTrigger}"/>
<Path Fill="{Binding ElementName=changeLbl,Path=Foreground}" Style="{StaticResource upChangePathTrigger}"/>
</StackPanel>
スタイル リソース
<Style x:Key="upChangePathTrigger" TargetType="Path">
<Setter Property="Visibility" Value="Collapsed" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Data" Value="M 0 4 L 4 0 L 8 4 Z" />
<Setter Property="StrokeThickness" Value="5" />
<Setter Property="Stroke" Value="GreenYellow"/>
<Style.Triggers>
<Trigger Property="Fill" Value="GreenYellow">
<Setter Property="Visibility" Value="Visible"/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="downChangePathTrigger" TargetType="Path">
<Setter Property="Visibility" Value="Collapsed" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Data" Value="M 0 0 L 4 4 L 8 0 Z" />
<Setter Property="StrokeThickness" Value="5" />
<Setter Property="Stroke" Value="Red"/>
<Style.Triggers>
<Trigger Property="Fill" Value="Red">
<Setter Property="Visibility" Value="Visible"/>
</Trigger>
</Style.Triggers>
</Style>
回答で更新
スタイルトリガー
<Style x:Key="changePathTrigger" TargetType="Path">
<Setter Property="Visibility" Value="Hidden" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="StrokeThickness" Value="5" />
<Style.Triggers>
<!--<DataTrigger Binding="{Binding Path=Change,Converter={StaticResource doubleToIntConverter}}" Value="0">
<Setter Property="Stroke" Value="0"/>
</DataTrigger>-->
<DataTrigger Binding="{Binding Path=Change,Converter={StaticResource doubleToIntConverter}}" Value="1">
<Setter Property="Visibility" Value="Visible"/>
<Setter Property="Data" Value="M 0 4 L 4 0 L 8 4 Z"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Change,Converter={StaticResource doubleToIntConverter}}" Value="-1">
<Setter Property="Visibility" Value="Visible"/>
<Setter Property="Data" Value="M 0 0 L 4 4 L 8 0 Z"/>
</DataTrigger>
</Style.Triggers>
</Style>
Xaml
<Path Fill="{Binding ElementName=changeLbl,Path=Foreground}" Stroke="{Binding ElementName=changeLbl,Path=Foreground}" Style="{StaticResource changePathTrigger}"/>