【发布时间】:2015-08-20 05:12:41
【问题描述】:
我有一个要显示用户名的 TextBlock,以及这样的电子邮件:
Firstname Lastname (Email)
但是,如果用户没有电子邮件存档,我不想放入 (Email) 部分。我还想将电子邮件斜体。通常,我会使用 TextBlock 并为文本的各个部分添加 Runs,但我找不到从 XAML 动态更改 TextBlock 内联的方法。
我试过了:
<TextBlock.Triggers>
<DataTrigger Binding="{Binding Path=HasEmail}" Value="True">
<Setter Property="Inlines" TargetName="contactTagNameEmailTextBlock">
<Setter.Value>
<Run Text="{Binding Path=Firstname}" />
<Run Text="{Binding Path=Lastname}" />
<Run Text="(" />
<Run Text="{Binding Path=Email}" />
<Run Text=")" />
</Setter.Value>
</Setter>
</DataTrigger>
</TextBlock.Triggers>
但是 VS 抱怨该值被设置了不止一次(由于多次运行)。我怎样才能解决这个问题?或者,如果我可以在整个 FrameworkElement 上设置绑定,那将非常方便。例如,如果我可以在我的 Grid 中放置一个占位符,我想在此绑定对象的代码中放置我在代码中构建的自定义控件,那将是最好的。
谢谢。
【问题讨论】:
-
Tangential:您可能可以使用
<Run Text="{Binding Path=Email, StringFormat='({0})'}" />而不是使用 3 次运行。