在Windows应用商店应用中实现下划线超链接的最佳方式?

GON*_*ale 12 windows-runtime winrt-xaml windows-store-apps

从我所看到的,似乎没有功能来实现Windows RT中TextBlocks或HyperlinkButtons等的下划线,这看起来很荒谬,但无论如何,是否有人有一个优雅的方法来解决这个问题,特别是创建一个链接,运行Click事件或绑定命令?

您可以看到开箱即用的支持似乎不存在:http://social.msdn.microsoft.com/Forums/en-CA/winappswithcsharp/thread/cba0c363-60da-4e

小智 18

这就是我以前解决这个问题的方法.

<HyperlinkButton x:Name="ExamplesLink" Click="ExamplesLink_Click"
   Extensions:FrameworkElementExtensions.SystemCursor="Hand">
   <TextBlock>
      <Underline>
        <Run Text="Examples"/>
      </Underline>
   </TextBlock>
</HyperlinkButton>
Run Code Online (Sandbox Code Playgroud)

如果您有WinRT XAML工具包,您也可以使用上面的扩展名设置光标.


MAX*_*AXE 9

如果您需要(如在我的情况),以模板HyperlinkButton,让你的绑定在你看来,你可以做,以这种方式:

<Style TargetType="HyperlinkButton"
    x:Key="StandardHyperlinkButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate>
                <TextBlock Style="{StaticResource BaseEntityDetailTextStyle}">
                    <Underline>
                        <Run Text="{Binding Path=Content, Mode=OneWay, RelativeSource={RelativeSource Mode=TemplatedParent}}" />
                    </Underline>
                </TextBlock>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

...然后在您的XAML视图中,例如:

<HyperlinkButton Style="{StaticResource StandardHyperlinkButton}"
    Content="{Binding Path=myContent, Mode=OneWay}"
    Command="{StaticResource myCommand}"
    CommandParameter="{Binding Path=myContent, Mode=OneWay}" />
Run Code Online (Sandbox Code Playgroud)

这样你也可以通过绑定解决@sacha问题!

  • 是的,看起来不错.让每个人都开心.应该在样式中的东西,并在视图中绑定应该在哪里.在我看来,这是正确的答案 (3认同)