我有一个简单的按钮ControlTemplate,可以为它们创建类似链接的外观:
<ControlTemplate x:Key="LinkTemplate" TargetType="{x:Type Button}">
<TextBlock Text="{TemplateBinding Content}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Blue" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="TextDecorations" Value="Underline" />
<Setter Property="Cursor" Value="Hand" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="Gray" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</ControlTemplate>
这很好用,但是当我想使用ContentStringFormat属性来格式化按钮的内容时会出现问题。由于TextBlock没有ContentStringFormat属性,因此无法使用模板绑定。
我还尝试在绑定按钮的内容时使用StringFormat,但它似乎被忽略,原始内容文本在模板绑定中传递给TextBlock。
我想我可以使用转换后的值并将ContentStringFormat作为参数传递给它,但感觉不对。
有没有办法使用纯XAML执行此操作,还是应该使用值转换器?
答案 0 :(得分:2)
我不知道ContentStringFormat的用法是什么,但您可以使用ContentPresenter而不是TextBlock来使用此属性。
答案 1 :(得分:0)
我没有找到“ContentStringFormat”的文档,所以我可能会遗漏一些简单的东西。
如何在ControlTemplate中使用Fil Forte的BindableRun,以便可以格式化Run。 Lubo Blagoev已经创建了一个控件,可以做到这一点。