2015-09-15 3 views
11

Мне нужно удалить подчеркивание в содержании HyperLinkButton. TextDecorations не существует в этом элементе XAML.Удалить Underline из HyperlinkButton в UWP XAML

<HyperlinkButton x:Name="BtnTeste" 
       Width="100" Height="50" BorderThickness="1" 
       HorizontalAlignment="Center" 
       Foreground="Black" Background="#ffffff" 
       NavigateUri="www.google.com" 
       Content="Execute" /> 

ответ

26

Этот подчеркивание не подвергается в стилеHyperlinkButton. К счастью, вы можете легко переопределить его ContentTemplate, чтобы избавиться от него.

<HyperlinkButton Content="my link"> 
    <HyperlinkButton.ContentTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding}" /> 
     </DataTemplate> 
    </HyperlinkButton.ContentTemplate> 
</HyperlinkButton> 
+1

Отлично. Работа. Большое спасибо! Приветствие – fipcurren88

+0

Ваш прием. Пожалуйста, подумайте о принятии его в качестве ответа! :) –

2

Чтобы изменить внешний вид кнопки, вы должны применить другой шаблон. Шаблон по умолчанию можно найти в MSDN. Чтобы удалить подчеркивание, вы должны изменить свойство TextDecoration в «UnderlineTextBlock» в шаблоне с «Подчеркнутый» на «Нет».

<Style TargetType="HyperlinkButton"> 
    <Setter Property="Foreground" Value="#FF73A9D8" /> 
    <Setter Property="Padding" Value="2,0,2,0"/> 
    <Setter Property="Cursor" Value="Hand"/> 
    <Setter Property="HorizontalContentAlignment" Value="Left"/> 
    <Setter Property="VerticalContentAlignment" Value="Top"/> 
    <Setter Property="Background" Value="Transparent" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="HyperlinkButton"> 
       <Grid Cursor="{TemplateBinding Cursor}" Background="{TemplateBinding Background}"> 
        <vsm:VisualStateManager.VisualStateGroups> 
         <vsm:VisualStateGroup x:Name="CommonStates"> 
          <vsm:VisualState x:Name="Normal"/> 
          <vsm:VisualState x:Name="MouseOver"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="UnderlineTextBlock" Storyboard.TargetProperty="Visibility" Duration="0"> 
             <DiscreteObjectKeyFrame KeyTime="0"> 
              <DiscreteObjectKeyFrame.Value> 
               <Visibility>Visible</Visibility> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </vsm:VisualState> 
          <vsm:VisualState x:Name="Pressed"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="UnderlineTextBlock" Storyboard.TargetProperty="Visibility" Duration="0"> 
             <DiscreteObjectKeyFrame KeyTime="0"> 
              <DiscreteObjectKeyFrame.Value> 
               <Visibility>Visible</Visibility> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </vsm:VisualState> 
          <vsm:VisualState x:Name="Disabled"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="DisabledOverlay" Storyboard.TargetProperty="Visibility" Duration="0"> 
             <DiscreteObjectKeyFrame KeyTime="0"> 
              <DiscreteObjectKeyFrame.Value> 
               <Visibility>Visible</Visibility> 
              </DiscreteObjectKeyFrame.Value> 
             </DiscreteObjectKeyFrame> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </vsm:VisualState> 
         </vsm:VisualStateGroup> 
         <vsm:VisualStateGroup x:Name="FocusStates"> 
          <vsm:VisualState x:Name="Focused"> 
           <Storyboard> 
            <DoubleAnimation Storyboard.TargetName="FocusVisualElement" Storyboard.TargetProperty="Opacity" Duration="0" To="1"/> 
           </Storyboard> 
          </vsm:VisualState> 
          <vsm:VisualState x:Name="Unfocused"/> 
         </vsm:VisualStateGroup> 
        </vsm:VisualStateManager.VisualStateGroups> 
        <TextBlock 
         x:Name="UnderlineTextBlock" 
         Text="{TemplateBinding Content}" 
         HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
         VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
         Margin="{TemplateBinding Padding}" 
         TextDecorations="Underline" 
         Visibility="Collapsed"/> 
        <TextBlock Canvas.ZIndex="1" 
         x:Name="DisabledOverlay" 
         Text="{TemplateBinding Content}" 
         Foreground="#FFAAAAAA" 
         HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
         VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
         Margin="{TemplateBinding Padding}" 
         Visibility="Collapsed"/> 
        <ContentPresenter 
         x:Name="contentPresenter" 
         Content="{TemplateBinding Content}" 
         ContentTemplate="{TemplateBinding ContentTemplate}" 
         VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
         HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
         Margin="{TemplateBinding Padding}"/> 
        <Rectangle x:Name="FocusVisualElement" Stroke="#FF6DBDD1" StrokeThickness="1" Opacity="0" IsHitTestVisible="false" /> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 

Вы можете применить шаблон, объявив его в качестве ресурса вашей страницы и ссылки его от кнопки.

Объявляя новый стиль:

<Page.Resources> 
    <Style x:Key="NoUnderlineHyperlinkButtonStyle" TargetType="HyperlinkButton"> 
     <!--template from above here--> 
    </Style> 
</Page.Resources> 

Реферирование его:

<HyperlinkButton Style="{StaticResource NoUnderlineHyperlinkButtonStyle}">No Underline!</HyperlinkButton> 
+1

Обычно я бы согласился, но чувак работает с win10/UWP и ваш пример шаблона Silverlight. Шаблон стиля win10 [style] (https://msdn.microsoft.com/en-us/library/windows/apps/Mt299132.aspx) немного отличается и дополнительный объект, предоставляющий подчеркивание, не существует. Я не уверен, что стиль по умолчанию из документов правильный, так как все, что я вижу в нем, есть ContentPresenter, мне было бы интересно узнать, что такое фактический шаблон, если OP просто щелкнул правой кнопкой мыши-> Изменить шаблон, чтобы мы могли см. источник истины. –

4

Просто сделайте так:

<HyperlinkButton> 
    <TextBlock Text="Blahblah" /> 
</HyperlinkButton> 
Смежные вопросы