WPF绑定回退值设置为绑定
有没有办法让另一个绑定作为回退值 我正在尝试这样做:WPF绑定回退值设置为绑定,wpf,data-binding,fallback,Wpf,Data Binding,Fallback,有没有办法让另一个绑定作为回退值 我正在尝试这样做: <Label Content="{Binding SelectedItem.Name, ElementName=groupTreeView, FallbackValue={Binding RootGroup.Name}}" /> 如果有人有另一个技巧来实现它,那就太好了。在什么情况下,您希望它使用回退值?如何确定绑定失败?即使绑定到空值,绑定仍然有效 我认为如果绑定返回nul
<Label Content="{Binding SelectedItem.Name, ElementName=groupTreeView,
FallbackValue={Binding RootGroup.Name}}" />
如果有人有另一个技巧来实现它,那就太好了。在什么情况下,您希望它使用回退值?如何确定绑定失败?即使绑定到空值,绑定仍然有效 我认为如果绑定返回null,最好使用转换器将其转换为默认值。不过,我不确定您如何可以默认为另一个绑定值
查看您正在寻找的是一种称为PriorityBinding(列表中的第6项)的东西 (摘自文章) 优先绑定的要点是 按顺序命名多个数据绑定 从最理想到最不理想的。 这样,如果第一次绑定失败, 为空和/或默认值,另一个 装订可以取代它的位置 e、 g
如果在绑定到null值和PriorityBinding(正如Shimmy指出的)时遇到问题,可以使用多绑定和多值转换器,如下所示:
public class PriorityMultiValueConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values.FirstOrDefault(o => o != null);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
用法:
<TextBox>
<TextBox.Text>
<MultiBinding Converter="{StaticResource PriorityMultiValueConverter}">
<Binding Path="LastNameNull" />
<Binding Path="FirstName" />
</MultiBinding>
</TextBox.Text>
</TextBox>
问题是PriorityBinding将null字符串视为成功的绑定:值dependencProperty.UnsetValue不被视为成功的返回值。
-因此,只要在绑定上使用转换器,在值为null时返回该属性即可@在我的例子中,我90%以上肯定DataContext
将有一个特定的属性,但我想返回调用.ToString()
where/如果没有。
<TextBox>
<TextBox.Text>
<MultiBinding Converter="{StaticResource PriorityMultiValueConverter}">
<Binding Path="LastNameNull" />
<Binding Path="FirstName" />
</MultiBinding>
</TextBox.Text>
</TextBox>