【发布时间】:2012-02-18 12:02:31
【问题描述】:
我制作了一种样式,使TextBlock 看起来像一个链接:
<Style x:Key="linkStyle" TargetType="TextBlock">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="TextDecorations" Value="Underline" />
</Trigger>
</Style.Triggers>
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Foreground" Value="Blue" />
<EventSetter Event="MouseLeftButtonDown" Handler="navigateLink" />
</Style>
只有TextBlock.Text以http://开头时如何应用?
【问题讨论】:
-
您可以使用 StyleSelector。看到这个帖子stackoverflow.com/questions/5082509/…
-
可能你必须使用事件和自定义 C# 代码来做到这一点;默认情况下,XAML 不够智能,无法模拟 String.StartsWith 或基于正则表达式应用样式。当然,您也可以创建继承 TextBlock 并具有像 DoesTextStartWithHttp 这样的属性的自定义控件,因此您可以在 XAML 中使用此属性,但是,对我来说,使用事件处理程序来更改 C# 代码中的样式更容易。
-
可以使用自定义 C# 代码(它已经有一些
navigateLink函数),但我希望能够将生成的样式应用于简单的TextBlock