有没有办法让另一个绑定作为回退值?
我正在尝试这样做:
<Label Content="{Binding SelectedItem.Name, ElementName=groupTreeView,
FallbackValue={Binding RootGroup.Name}}" />如果任何人有其他技巧来完成它,那就太好了。
发布于 2009-12-17 02:01:43
你正在寻找的是一个叫做PriorityBinding的东西(在this列表中排名第六)
(摘自文章)
PriorityBinding的要点是按照从最需要到最不需要的顺序命名多个数据绑定。这样,如果第一个绑定失败,是空的和/或默认的,另一个绑定可以代替它。
例如:
<TextBox>
<TextBox.Text>
<PriorityBinding>
<Binding Path="LastNameNonExistant" IsAsync="True" />
<Binding Path="FirstName" IsAsync="True" />
</PriorityBinding>
</TextBox.Text>
</TextBox>发布于 2015-08-17 16:46:09
如果在绑定到null值和PriorityBinding时遇到问题(正如Shimmy所指出的),您可以使用MultiBinding和类似的MultiValueConverter:
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>发布于 2009-12-17 00:08:27
您希望它在什么情况下使用回退值?您如何确定绑定已失败?绑定仍然有效,即使它绑定到空值。
我认为,如果绑定返回null,那么使用转换器将其转换为默认值可能是一个很好的选择。不过,我不确定你怎么能缺省为另一个限定值。
查看converters here
https://stackoverflow.com/questions/1915562
复制相似问题