locked
Comment éditer le Style du HyperLinkButton ? RRS feed

  • Question

  • Bonjour, autre simple question, comme cité dans le titre : comment faire en sorte qu'un HyperLinkButton ne soit pas toujours en souligné ?

    Merci bcp de votre patience :)

    lundi 25 juillet 2011 10:16

Réponses

  • Re

     

    Deux possibilités, partir d'un Button et supprimer son border :

     

    <Button Content="mon texte" Border="0"/>
    

    ou partir d'un hyperlinkbutton, mais éditer son template :

     

    <HyperlinkButton Content="mon text" Style="{StaticResource NoUnderlineHyperlinkButtonStyle}"/>
    			
    
    
    

    avec dans les ressources de ta page :

     

    	<Style x:Key="NoUnderlineHyperlinkButtonStyle" TargetType="HyperlinkButton">
    			<Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
    			<Setter Property="Background" Value="Transparent"/>
    			<Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
    			<Setter Property="Padding" Value="0"/>
    			<Setter Property="Template">
    				<Setter.Value>
    					<ControlTemplate TargetType="HyperlinkButton">
    						<Border Background="Transparent">
    							<VisualStateManager.VisualStateGroups>
    								<VisualStateGroup x:Name="CommonStates">
    									<VisualState x:Name="Normal"/>
    									<VisualState x:Name="MouseOver"/>
    									<VisualState x:Name="Pressed">
    										<Storyboard>
    											<DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="TextElement"/>
    										</Storyboard>
    									</VisualState>
    									<VisualState x:Name="Disabled">
    										<Storyboard>
    											<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="TextElement">
    												<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
    											</ObjectAnimationUsingKeyFrames>
    										</Storyboard>
    									</VisualState>
    								</VisualStateGroup>
    							</VisualStateManager.VisualStateGroups>
    							<Border Background="{TemplateBinding Background}" Margin="{StaticResource PhoneHorizontalMargin}" Padding="{TemplateBinding Padding}">
    								<TextBlock x:Name="TextElement" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Text="{TemplateBinding Content}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
    						
    							</Border>
    						</Border>
    					</ControlTemplate>
    				</Setter.Value>
    			</Setter>
    		</Style>
    



    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    • Marqué comme réponse Neo33ASM lundi 25 juillet 2011 10:31
    lundi 25 juillet 2011 10:22

Toutes les réponses

  • Re

     

    Deux possibilités, partir d'un Button et supprimer son border :

     

    <Button Content="mon texte" Border="0"/>
    

    ou partir d'un hyperlinkbutton, mais éditer son template :

     

    <HyperlinkButton Content="mon text" Style="{StaticResource NoUnderlineHyperlinkButtonStyle}"/>
    			
    
    
    

    avec dans les ressources de ta page :

     

    	<Style x:Key="NoUnderlineHyperlinkButtonStyle" TargetType="HyperlinkButton">
    			<Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
    			<Setter Property="Background" Value="Transparent"/>
    			<Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMedium}"/>
    			<Setter Property="Padding" Value="0"/>
    			<Setter Property="Template">
    				<Setter.Value>
    					<ControlTemplate TargetType="HyperlinkButton">
    						<Border Background="Transparent">
    							<VisualStateManager.VisualStateGroups>
    								<VisualStateGroup x:Name="CommonStates">
    									<VisualState x:Name="Normal"/>
    									<VisualState x:Name="MouseOver"/>
    									<VisualState x:Name="Pressed">
    										<Storyboard>
    											<DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="TextElement"/>
    										</Storyboard>
    									</VisualState>
    									<VisualState x:Name="Disabled">
    										<Storyboard>
    											<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="TextElement">
    												<DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
    											</ObjectAnimationUsingKeyFrames>
    										</Storyboard>
    									</VisualState>
    								</VisualStateGroup>
    							</VisualStateManager.VisualStateGroups>
    							<Border Background="{TemplateBinding Background}" Margin="{StaticResource PhoneHorizontalMargin}" Padding="{TemplateBinding Padding}">
    								<TextBlock x:Name="TextElement" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Text="{TemplateBinding Content}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
    						
    							</Border>
    						</Border>
    					</ControlTemplate>
    				</Setter.Value>
    			</Setter>
    		</Style>
    



    S'il vous plaît n'oublier pas de marquer la ou les réponses qui aident à résoudre votre problème. Pour que la discussion puisse être marquée comme résolue
    • Marqué comme réponse Neo33ASM lundi 25 juillet 2011 10:31
    lundi 25 juillet 2011 10:22
  • Ouah, très complet, la seconde solution me convient très bien je pense, car un bouton, même sans Border, inverse ses couleurs quand on passe le doigts dessus il me semble : visuellement j'suis pas fan.
    lundi 25 juillet 2011 10:36