7

您好,如果返回的结果为空,我正在尝试为文本块提供默认值

这就是我正在尝试的!

返回的只是我设置的字符串格式!

 <TextBlock x:Name="NameTxtBlock" Grid.Column="0" Margin="0,0,40,0" FontFamily="Segoe UI" FontSize="14" Text="{Binding Name, StringFormat='Item Name: {0}'}"  Padding="2">
    <TextBlock.Style>
        <Style TargetType="TextBlock" >                                            
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=NameTxtBlock, Path=Text}" Value="{x:Null}">
                    <Setter Property="FontStyle" Value="Italic"/>
                    <Setter Property="Text" Value="No Name Found" />
                </DataTrigger>
                <DataTrigger Binding="{Binding ElementName=NameTxtBlock, Path=Text}" Value="{x:Static System:String.Empty}">
                    <Setter Property="FontStyle" Value="Italic"/>
                    <Setter Property="Text" Value="No Name Found" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>
4

4 回答 4

21

您可以使用TargetNullValue 属性。如果绑定返回 Null,这将返回TargetNullValuewithout 。StringFormat

<TextBlock Text="{Binding Name, StringFormat='Item Name: {0}', TargetNullValue='No Name Found'}" />
于 2013-05-17T15:40:34.187 回答
3

您可以TargetNullValue直接在绑定中使用该属性。

<TextBox Text='{Binding Path=LastName, TargetNullValue="No name found."}' />
于 2013-05-17T15:43:32.817 回答
1

在我的应用程序中,我发现将触发器绑定到我的控件绑定到的实际对象更可靠。因此,如果我在 VM 中查看 Name 以绑定实际文本,我也会将我的数据触发器绑定到该名称。

<TextBlock x:Name="NameTxtBlock" Grid.Column="0" Margin="0,0,40,0" FontFamily="Segoe UI" FontSize="14" Text="{Binding Name, StringFormat='Item Name: {0}'}"  Padding="2">
<TextBlock.Style>
    <Style TargetType="TextBlock" >                                            
        <Style.Triggers>
            <DataTrigger Binding="{Binding Name}" Value="{x:Null}">
                <Setter Property="FontStyle" Value="Italic"/>
                <Setter Property="Text" Value="No Name Found" />
            </DataTrigger>
            <DataTrigger Binding="{Binding Name}" Value="">
                <Setter Property="FontStyle" Value="Italic"/>
                <Setter Property="Text" Value="No Name Found" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TextBlock.Style>

于 2013-05-17T15:43:40.300 回答
1

我会将 TextBlock 绑定到不返回 null 的对象的属性;使您的属性返回默认值。看来您总是希望 FontStyle 为斜体,所以我将在触发器之外构建它。

于 2013-05-17T15:23:29.680 回答