Как применить свойство Hyperlink TextDecorations через стиль в XAML для WPF - PullRequest
2 голосов
/ 05 января 2012

У меня есть этот xaml

<Button.Content>
  <Hyperlink>
    <Hyperlink.TextDecorations>
      <TextDecoration>
        <TextDecoration.Pen>
          <Pen Thickness="0" />
        </TextDecoration.Pen>
      </TextDecoration>
    </Hyperlink.TextDecorations>
    <Run Text="jumped over" />
  </Hyperlink>
</Button.Content>

Мне нужно применить это из стиля. Мой стиль выглядит так

<Style x:Key="Button_Link" TargetType="{x:Type Hyperlink}">
  <Setter Property="TextDecorations" >
    <Setter.Value>
      <TextDecorations>
        <TextDecoration>
          <TextDecoration.Pen>
            <Pen Thickness="0" />
          </TextDecoration.Pen>
        </TextDecoration>
      </TextDecorations>
    </Setter.Value>
  </Setter>
</Style>

Это вызывает ошибку в моем файле стиля, который является ResourceDictionary, используемый для свободного XAML

Я применяю стиль к гиперссылке вот так

Style="{DynamicResource Button_Link}"

1 Ответ

3 голосов
/ 05 января 2012

Вам не нужно устанавливать толщину пера на ноль, чтобы удалить подчеркивание, которое вы можете использовать, используя следующий стиль:

<Style x:Key="Button_Link" TargetType="{x:Type Hyperlink}">            
     <Setter Property="TextDecorations" Value="None" />
</Style>

В случае, если это просто упрощенный пример, вы можете исправить свой существующий стильзаменив <TextDecorations> на <TextDecorationsCollection> примерно так:

<Style x:Key="Button_Link" TargetType="{x:Type Hyperlink}">            
    <Setter Property="TextDecorations">
        <Setter.Value>
            <TextDecorationCollection>
                <TextDecoration>
                    <TextDecoration.Pen>
                        <Pen Thickness="0" />
                    </TextDecoration.Pen>
                </TextDecoration>
            </TextDecorationCollection>
        </Setter.Value>
    </Setter>
</Style>

Кроме того, хотя это и не нужно, ваш стиль статичен, поэтому его можно применять как

Style="{StaticResource Button_Link}"
...