如果wpf中的值不为null,则绑定空字符串

时间:2014-02-08 11:50:02

标签: c# wpf string binding

我想创建一个WPF usercontrol,当且仅当datacontext == null时才显示字符串。我在绑定中使用TargetNullValue属性在datacontext为null时显示自定义字符串,并且按预期工作。但是当datacontext为非null时,它只显示ToString值,我想摆脱它。

当然我可以通过使用valueconverter轻松解决这个问题,但我想找到一种方法来解决这个问题,只能使用xaml。有谁知道这样做的方法?

2 个答案:

答案 0 :(得分:3)

如果您希望仅在绑定值为空的情况下显示TextBlock,则可以使用触发器,并在绑定值为null时将Visibility设置为Visible 以及Collapsed总是。

<TextBlock Text="{Binding TargetNullValue=NullValue}">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Setter Property="Visibility" Value="Collapsed"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding}" Value="{x:Null}">
                    <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

答案 1 :(得分:2)

{x:Null}上使用数据触发器。根据品味和需求,有很多选项可以使用样式,数据模板等。例如:

<DataTemplate x:Key="ShowOnNull">
  <TextBlock x:Name="text"/>

  <DataTemplate.Triggers>
    <DataTrigger Binding="{Binding}" Value="{x:Null}">
      <Setter TargetName="text" Property="Text" Value="your custom string"/>
    </DataTrigger>
  </DataTemplate.Triggers>
</DataTemplate>
...
<ContentPresenter ContentTemplate="{StaticResource ShowOnNull}" 
    Content="{Binding ...}"/>