您好我正在尝试为文本块提供默认值,如果返回的结果为空
这是我正在尝试的!
返回的只是我设置的字符串格式!
<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>
答案 0 :(得分:18)
您可以使用TargetNullValue Property。如果绑定返回Null,则返回TargetNullValue
而不返回StringFormat
。
<TextBlock Text="{Binding Name, StringFormat='Item Name: {0}', TargetNullValue='No Name Found'}" />
答案 1 :(得分:3)
您可以直接在绑定中使用TargetNullValue
属性。
<TextBox Text='{Binding Path=LastName, TargetNullValue="No name found."}' />
答案 2 :(得分:1)
我将TextBlock绑定到一个没有返回null的对象的属性;使您的属性返回默认值。看来你总是希望FontStyle是Italic,所以我只想在Triggers外部构建它。
答案 3 :(得分:0)
在我的应用程序中,我发现将触发器绑定到我的控件绑定的实际对象更加可靠。所以,如果我在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>