Bullet が表示されないように、WPF RadioButton のスタイルを変更したいと考えています。ほとんど機能していますが、テキストに下線を引くことができません。これはこれまでの私の XAML です。
<Style TargetType="{x:Type RadioButton}">
<Setter Property="Foreground" Value="DarkBlue" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<Border SnapsToDevicePixels="True">
<ContentPresenter VerticalAlighment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="TextBlock.FontWeight" Value="UltraBold" />
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Cursor" Value="Hand" />
<Setter Property="TextBlock.TextDecorations" Value="Underline" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
IsSelected が False のときに RadioButton のテキストに下線が引かれない理由を説明できる提案があれば、大歓迎です。
編集:提供されたリンクに基づいて、スタイルを次のように変更できました。
<Style TargetType="{x:Type RadioButton}">
<Setter Property="Foreground" Value="DarkBlue" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RadioButton}">
<TextBlock x:Name="TextBlock" Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type RadioButton}}, Path=Content}" />
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="TextBlock.FontWeight" Value="UltraBold" />
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Cursor" Value="Hand" />
<Setter TargetName="TextBlock" Property="TextDecorations" Value="Underline" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
次に、このスタイルで RadioButton を使用します。
<RadioButton Content"New" IsChecked="True" />
<RadioButton Content="Filter" />
これで、箇条書きのない 2 つの RadioButton が表示されます。IsSelected が true の場合、コンテンツは太字になり、IsSelected が false の場合、太字ではなく下線が引かれ、ハンド カーソルが表示されます。
私の唯一のコメントは、TextBlock の Text プロパティを RadioButton の Content プロパティにバインドしている場合、RadioButton の Content が文字列以外の場合に失敗するかどうかです。