2015-09-15 7 views
11

Ich muss die Unterstreichung in den Inhalt von HyperLinkButton entfernen. TextDecorations ist in diesem XAML-Element nicht vorhanden.Entfernen Sie die Unterstreichung von HyperlinkButton in UWP XAML

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

Antwort

26

Diese Unterstrichen ist nicht im Stil HyperlinkButtonausgesetzt. Glücklicherweise können Sie leicht seine ContentTemplate überschreiben, um es loszuwerden.

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

Großartig. Arbeit. Vielen Dank! Grüße – fipcurren88

+0

Ihre Begrüßung. Bitte überlege es als Antwort! :) –

2

Um das Erscheinungsbild der Schaltfläche zu ändern, müssen Sie eine andere Vorlage anwenden. Die Standardvorlage kann in MSDN gefunden werden. Um die Unterstreichung zu entfernen, müssen Sie die TextDecoration Eigenschaft des "UnderlineTextBlock" in der Vorlage von "Underline" auf "None" ändern.

<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> 

können Sie die Vorlage anwenden, indem sie als eine Ressource Ihrer Seite erklärt und es von Ihrer Schaltfläche verweist.

Deklarieren einen neuen Stil:

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

es Referenzierung:

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

Normalerweise würde ich dem zustimmen, aber der Kerl arbeitet mit win10/UWP und Ihr Beispiel ist ein Silverlight-Vorlage. Die win10 [Stilvorlage] (https://msdn.microsoft.com/en-us/library/windows/apps/Mt299132.aspx) ist etwas anders und das zusätzliche Objekt, das die Unterstreichung zur Verfügung stellt, existiert nicht. Ich bin mir nicht sicher, ob der Standard-Stil aus den Dokumenten korrekt ist, da alles, was ich dort sehe, ein ContentPresenter ist. Ich wäre gespannt, was das eigentliche Template ist, wenn das OP einfach mit Rechtsklick-> Template bearbeiten Seht die Quelle der Wahrheit. –

4

Genau so machen:

<HyperlinkButton> 
    <TextBlock Text="Blahblah" /> 
</HyperlinkButton> 
Verwandte Themen