<TextBlock Text="{Binding Name}" />
如果Name为空或null,则使用NameOpt绑定 像这样:
<TextBlock Text="{Binding if Name ? Name : NameOpt}" />
答案 0 :(得分:1)
您可以使用DataTriger来实现行为
<Style TargetType="TextBlock">
<Setter Property="Text" Value="{Binding Name}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Name}" Value="{x:Null}">
<Setter Property="Text" Value="{Binding NameOpt}"/>
</DataTrigger>
</Style.Triggers>
</Style>
答案 1 :(得分:1)
你可以使用DataTrigger
并且没有什么可以阻止你,但这可能是一种不好的方法来进行绑定,特别是从MVVM的角度来看。 通常触发器用于根据XAML本身或VM中特定属性的条件更改属性。根据VM属性是否为null的状态,对属性进行动态绑定有点奇怪。
要完全从VM尝试这样做,您的视图应绑定到Name
这样的单个属性:
<TextBlock Text="{Binding Name}" />
...在虚拟机的处理过程中执行以下操作:
public string Name { get ; set; } // TODO: add usual property changed stuff
void UpdateStuff()
{
// perhaps update Name and NameOpt here
// ...
// Now update the exposed property
Name ? Name : NameOpt
}