我不会复制/粘贴整个xaml文件。要解释它可能太长了,但有趣的是:我得到了一个属性"Name“的绑定
<TextBlock Text="{Binding Name}"/>问题是,有时候,我的项目没有"Name“属性。它不会崩溃,但我的TextBlock中只有一个空文本
如果Name为空,我要做的就是绑定到"nothing",只绑定{Binding}。这将显示我的对象名称,它将是完美的!
提前感谢你的帮助,如果这是noobie的问题,我很抱歉:(
发布于 2011-11-23 22:28:58
这里您需要的是一个PriorityBinding。
特别是,它看起来像这样(确切的语法可能需要一些验证):
<TextBlock>
<TextBlock.Text>
<PriorityBinding>
<Binding Path="Name"/>
<Binding />
</PriorityBinding>
</TextBlock.Text>
</TextBlock>请注意,当Name属性在被绑定的对象上不可用时,它会特别后退;如果Name属性有一个空字符串值,我相信它仍然会使用该空值。
发布于 2011-11-23 22:24:59
您可以使用DataTrigger应用样式
<TextBlock>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Text" Value="{Binding Name}"/>
<Style.Triggers>
<!-- In this binding you could inject a converter which checks for more than null -->
<DataTrigger Binding="{Binding Name}" Value="{x:Null}">
<Setter Property="Text" Value="{Binding}"/>
</DataTrigger>
<Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>发布于 2011-11-23 22:21:35
如果您不必绑定到对象类型名称,则可以使用TargetNullValue,如果绑定的属性为null,它将为您提供默认值,如下所示:
<TextBlock Text="{Binding Name, TargetNullValue=Default}" />如果你真的想要对象类型的名字,我建议你写一个转换器(实现IValueConverter)。如果你想要一个样本转换器,请让我知道。
https://stackoverflow.com/questions/8243652
复制相似问题