私はhtmlからxamlへの変換を行い、this code as a starting pointを使用しようとしています。私のアプリはWindows Phone 8.1の普遍的なアプリです。このコードは、ハイパーリンクを除いて非常に有効です。これは、ハイパーリンクが赤い枠でマークされているいくつかの隠しマージンやパディングを持っていると私は0スタイル/テンプレートで未知のHyperlinkButton余白/埋め込み
に設定することで、スタイルでそれを修正することはできませんHyperlingButtonのようになります。
私のスタイルはここにある:
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にHyperlinkButton
のMargin
を設定
(トップ):
それは余白TextBlock
修正でHyperlinkButton
を置き換え、他のテキストやInlineUIContainerの問題ではない:
'TextBlock'スタイルの' TextStylePostBody'はどうですか?多分問題はそこにあります。 – Pollitzer
いいえ、それは簡単すぎるでしょう。テキストブロックスタイルを追加しました。 – crea7or
ハイパーリンクを囲むテキストのスタイルはどうですか? –