我想更改WPF RadioButton的样式,以便未显示Bullet,当IsSelected为true时文本为粗体,文本不是粗体,带下划线,并且当IsSelected为false时,光标为手。我有它几乎工作,但我不能得到下划线的文字。到目前为止,这是我的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" />
现在显示两个没有Bullet的RadioButton,当IsSelected为true时,其内容为Bold,当IsSelected为false时,它不是粗体,带下划线并显示Hand光标。
我现在唯一的评论是,如果我将TextBlock的Text属性绑定到RadioButton的Content属性,那么如果RadioButton的内容不是String那么会失败吗?
答案 0 :(得分:0)
是的,在内容不会显示的情况下,它会失败,相反,你会在内容上得到ToString()
的结果,但是因为你想要收音机的带下划线/粗体文字,这似乎是你究竟想要什么?