我有一个TextBlock,我想显示一个用户名,并像这样发送电子邮件:
Firstname Lastname (Email)
Run Code Online (Sandbox Code Playgroud)
但是,如果用户没有存档电子邮件,我不想将(电子邮件)部分放入.我还想把电子邮件用斜体.通常,我会使用TextBlock并为文本的各个部分添加运行,但我找不到从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>
Run Code Online (Sandbox Code Playgroud)
但VS抱怨该值设置不止一次(由于多次运行).我怎么能绕过这个?或者,如果我可以在整个FrameworkElement上设置绑定,那将非常方便.例如,如果我可以在我的网格中放置一个占位符,我想放置一个自定义控件,我在这个绑定对象后面的代码中构造,那将是最好的.
谢谢.
这样的东西应该工作:
<Window.Resources>
<BooleanToVisibility x:Key="visibilityConverter"/>
</Window.Resources>
...
<TextBlock>
<Run Text="{Binding Path=Firstname}" />
<Run Text="{Binding Path=Lastname}" />
<TextBlock Visibility="{Binding HasEmail, Converter={StaticResource visibilityConverter}}">
<Run Text="(" />
<Run Text="{Binding Path=Email}" />
<Run Text=")" />
</TextBlock>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7133 次 |
| 最近记录: |