2016-03-19 15 views
0

私はhtmlからxamlへの変換を行い、this code as a starting pointを使用しようとしています。私のアプリはWindows Phone 8.1の普遍的なアプリです。このコードは、ハイパーリンクを除いて非常に有効です。これは、ハイパーリンクが赤い枠でマークされているいくつかの隠しマージンやパディングを持っていると私は0スタイル/テンプレートで未知のHyperlinkBut​​ton余白/埋め込み

に設定することで、スタイルでそれを修正することはできませんHyperlingButtonのようになります。 enter image description here

私のスタイルはここにある:

TextBlockのための
<Style TargetType="HyperlinkButton" x:Key="UnderlineHyperlinkButton"> 
     <Setter Property="BorderThickness" Value="0" /> 
     <Setter Property="Margin" Value="0,0,0,0" /> 
     <Setter Property="Padding" Value="0,0,0,0"/> 
     <Setter Property="FontSize" Value="18"/> 
     <Setter Property="FontFamily" Value="{ThemeResource PhoneFontFamilyNormal}"/> 
     <Setter Property="FontWeight" Value="Normal"/>   
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="HyperlinkButton"> 
        <TextBlock Style="{StaticResource TextStylePostBody}"> 
         <Underline> 
          <Run Text="{Binding Path=Content, Mode=OneWay, RelativeSource={RelativeSource Mode=TemplatedParent}}" /> 
         </Underline> 
        </TextBlock> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

スタイル:

 <Style x:Key="TextStylePostBody" TargetType="TextBlock" BasedOn="{StaticResource BaseTextBlockStyle}"> 
     <Setter Property="Foreground" Value="Black"/> 
     <Setter Property="FontSize" Value="18"/> 
     <Setter Property="Padding" Value="0,0,0,0"/> 
     <Setter Property="Margin" Value="0,0,0,0"/> 
     <Setter Property="TextWrapping" Value="Wrap"/> 
     <Setter Property="TextTrimming" Value="WordEllipsis"/> 
     <Setter Property="TextWrapping" Value="WrapWholeWords"/> 
    </Style> 

私は余白にハードコードされた値を使用して、それを修正することができます<Setter Property="Margin" Value="0,-9, 4,-4"/>しかしそれは良く見えません。

ハイパーリンクを作成するコードはここにある:

private static Inline GenerateHyperLink(HtmlNode node) 
    { 
     Span s = new Span();    
     InlineUIContainer iui = new InlineUIContainer(); 
     HyperlinkButton hb = new HyperlinkButton() { NavigateUri = new Uri(node.Attributes["href"].Value, UriKind.Absolute), Content = CleanText(node.InnerText) }; 
     hb.Style = (Style)Application.Current.Resources[ "UnderlineHyperlinkButton" ]; 
     iui.Child = hb; 
     s.Inlines.Add(iui); 
     return s; 
    } 

は、私が逃した何かがありますか?

更新: は、このXAMLコードで簡単なテストでした:

 <StackPanel Grid.Row="0" Orientation="Horizontal"> 
     <TextBlock Foreground="Black" FontSize="18" FontWeight="Normal" FontFamily="Segroe UI">TextBlock</TextBlock> 
     <RichTextBlock> 
     <Paragraph> 
       <Run Foreground="Black" FontSize="18" FontWeight="Normal" FontFamily="Segroe UI"> 
       <Run.Text>Run text</Run.Text> 
      </Run> 
       <InlineUIContainer> 
        <HyperlinkButton FontSize="18" FontFamily="Segroe UI" FontWeight="Normal" Margin="0" Padding="0,0,0,0">Link Text</HyperlinkButton> 
       </InlineUIContainer> 
      </Paragraph> 
     </RichTextBlock> 
    </StackPanel> 

をし、この得た:-9にHyperlinkButtonMarginを設定

enter image description here

(トップ):

enter image description here

それは余白TextBlock修正でHyperlinkButtonを置き換え、他のテキストやInlineUIContainerの問題ではない:

enter image description here

+0

'TextBlock'スタイルの' TextStylePostBody'はどうですか?多分問題はそこにあります。 – Pollitzer

+0

いいえ、それは簡単すぎるでしょう。テキストブロックスタイルを追加しました。 – crea7or

+0

ハイパーリンクを囲むテキストのスタイルはどうですか? –

答えて

2

InlineUIContainerHyperlinkButton合わせに起因すると書式設定の問題を避けることにしました。私は<Underline>Link添付のプロパティに置き換えました。詳細はthis articleです。

EDIT:理由はわかりませんが、ランタイムAPIにはジョブをうまくやる専用のHyperlinkクラスがあります。

関連する問題