2012-10-13 8 views
7

मैं एक RichTextBlock तत्व में एक हाइपरलिंक दिखाने में सक्षम होना चाहता हूं, लेकिन मैं यह भी सही दिखना चाहता हूं। निकटतम मैं यह है करने के लिए प्राप्त करने में सक्षम किया गया है:मैं RichTextBlock में हाइपरलिंक कैसे बना सकता हूं पूरी तरह से असाइन नहीं किया जा सकता है?

How I was able to get it to look

इस के लिए XAML नीचे चिपकाया जाता है - अनिवार्य रूप से, मैं InlineUIElement का उपयोग करें और मैं संसाधन संपादित बटन भर के सभी crud दूर करने के लिए। क्या मैं कुछ भूल रहा हूँ? क्या इसका हल करने का एकमात्र असली तरीका है अपना खुद का हाइपरलिंक रोल करना?

यहाँ रिच टेक्स्ट ब्लॉक के लिए XAML है:

<RichTextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14"> 
    <Paragraph>I just want this 
     <InlineUIContainer> 
      <HyperlinkButton Style="{StaticResource HyperlinkButtonStyle1}">Hyperlink</HyperlinkButton> 
     </InlineUIContainer> 
     to not look like crap 
    </Paragraph> 
</RichTextBlock> 

और यहाँ nuked संसाधन के लिए XAML है:

<Style x:Key="HyperlinkButtonStyle1" TargetType="HyperlinkButton"> 
    <Setter Property="Foreground" Value="{StaticResource HyperlinkForegroundThemeBrush}"/> 
    <Setter Property="Background" Value="{StaticResource HyperlinkButtonBackgroundThemeBrush}"/> 
    <!--<Setter Property="BorderBrush" Value="{StaticResource HyperlinkButtonBorderThemeBrush}"/>--> 
    <Setter Property="BorderThickness" Value="0"/> 
    <Setter Property="Padding" Value="0"/> 
    <Setter Property="HorizontalAlignment" Value="Left"/> 
    <Setter Property="VerticalAlignment" Value="Bottom"/> 
    <Setter Property="FontFamily" Value="Global User Interface"/> 
    <Setter Property="FontSize" Value="14"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="HyperlinkButton"> 
       <Grid> 
        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup x:Name="CommonStates"> 
          <VisualState x:Name="Normal"/> 
          <VisualState x:Name="PointerOver"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter"> 
             <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HyperlinkPointerOverForegroundThemeBrush}"/> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="Pressed"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter"> 
             <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HyperlinkPressedForegroundThemeBrush}"/> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="Disabled"> 
           <Storyboard> 
            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter"> 
             <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource HyperlinkDisabledThemeBrush}"/> 
            </ObjectAnimationUsingKeyFrames> 
           </Storyboard> 
          </VisualState> 
         </VisualStateGroup> 
         <VisualStateGroup x:Name="FocusStates"> 
          <VisualState x:Name="Focused"> 
           <Storyboard> 
            <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualWhite"/> 
            <DoubleAnimation Duration="0" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualBlack"/> 
           </Storyboard> 
          </VisualState> 
          <VisualState x:Name="Unfocused"/> 
          <VisualState x:Name="PointerFocused"/> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" VerticalAlignment="Bottom"> 
         <ContentPresenter x:Name="ContentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" ContentTransitions="{TemplateBinding ContentTransitions}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="0" VerticalAlignment="Bottom"/> 
        </Border> 
        <Rectangle x:Name="FocusVisualWhite" IsHitTestVisible="False" Opacity="0" StrokeDashOffset="1.5" StrokeEndLineCap="Square" Stroke="{StaticResource FocusVisualWhiteStrokeThemeBrush}" StrokeDashArray="1,1"/> 
        <Rectangle x:Name="FocusVisualBlack" IsHitTestVisible="False" Opacity="0" StrokeDashOffset="0.5" StrokeEndLineCap="Square" Stroke="{StaticResource FocusVisualBlackStrokeThemeBrush}" StrokeDashArray="1,1"/> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

उत्तर

6

आप है की कोशिश की TextButtonStyle को देख StandardStyles.xaml के साथ शामिल में मानक वीएस टेम्पलेट्स? आपको अपना खुद का हाइपरलिंक बनाना नहीं चाहिए। मेट्रो में आप पूरी तरह से नियंत्रण के टेम्पलेट को प्रतिस्थापित कर सकते हैं, इसलिए कार्यक्षमता को पुन: पेश करने की कोई आवश्यकता नहीं है जब आपके इच्छित कार्यक्षमता के साथ पहले से ही नियंत्रण हो।

संपादित करें: मैं TextButtonStyle टेम्पलेट लिया और Margin="3,-20,3,0" को मार्जिन बदल गया है और उसके बाद FontSize="14" गयी।

अब यह इस तरह दिखता है:

enter image description here

कारण यह अब तक बंद किया गया था TextButtonStyle टेम्पलेट में TextBlock पर TextBlock टेम्पलेट इस तरह दिखता है:

<Style x:Key="PageSubheaderTextStyle" TargetType="TextBlock" BasedOn="{StaticResource SubheaderTextStyle}"> 
    <Setter Property="TextWrapping" Value="NoWrap"/> 
    <Setter Property="VerticalAlignment" Value="Bottom"/> 
    <Setter Property="Margin" Value="0,0,0,40"/> 
</Style> 

सूचना सीमा। तो इसे ठीक करने के लिए हमें या तो माता-पिता पर नकारात्मक मार्जिन बनाना था (जैसे मैंने किया) या बस PageSubheaderTextStyle पर मार्जिन बदलें।

+0

हाँ - टेक्स्टबटन स्टाइल का उपयोग करके एक ही सटीक प्रभाव देता है ... –

+0

@ShaharPrish मेरा संपादन देखें। – mydogisbox

+0

धन्यवाद को प्रभावित करने के लिए आपको बस टेम्पलेट को थोड़ा सा ट्विक करने की आवश्यकता है। ऐसा लगता है कि यह बेहतर काम करता है - अभी भी अच्छा नहीं लग रहा है, लेकिन कम से कम यह गठबंधन है। इसे "बस काम किया" की इच्छा है। –

संबंधित मुद्दे

 संबंधित मुद्दे