TextBlock内联上的WPF触发器

Max*_*Max 1 c# wpf

我有一个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上设置绑定,那将非常方便.例如,如果我可以在我的网格中放置一个占位符,我想放置一个自定义控件,我在这个绑定对象后面的代码中构造,那将是最好的.

谢谢.

Tho*_*que 6

这样的东西应该工作:

<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)