1

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 が文字列以外の場合に失敗するかどうかです。

4

1 に答える 1

0

はい、コンテンツが表示されないという意味で失敗しますが、代わりにToString()コンテンツの結果が得られますが、ラジオに下線付き/太字のテキストが必要なため、それはまさにあなたが望んでいるようです?

于 2012-10-23T08:20:48.877 に答える