首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF绑定FallbackValue设置为Binding

WPF绑定FallbackValue设置为Binding
EN

Stack Overflow用户
提问于 2009-12-16 23:54:03
回答 3查看 21.9K关注 0票数 39

有没有办法让另一个绑定作为回退值?

我正在尝试这样做:

代码语言:javascript
复制
<Label Content="{Binding SelectedItem.Name, ElementName=groupTreeView,
                         FallbackValue={Binding RootGroup.Name}}" />

如果任何人有其他技巧来完成它,那就太好了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-17 02:01:43

你正在寻找的是一个叫做PriorityBinding的东西(在this列表中排名第六)

(摘自文章)

PriorityBinding的要点是按照从最需要到最不需要的顺序命名多个数据绑定。这样,如果第一个绑定失败,是空的和/或默认的,另一个绑定可以代替它。

例如:

代码语言:javascript
复制
<TextBox>
    <TextBox.Text>
        <PriorityBinding>
            <Binding Path="LastNameNonExistant" IsAsync="True" />
            <Binding Path="FirstName" IsAsync="True" />
        </PriorityBinding>
    </TextBox.Text>
</TextBox>
票数 79
EN

Stack Overflow用户

发布于 2015-08-17 16:46:09

如果在绑定到null值和PriorityBinding时遇到问题(正如Shimmy所指出的),您可以使用MultiBinding和类似的MultiValueConverter:

代码语言:javascript
复制
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();
    }
}

用法:

代码语言:javascript
复制
<TextBox>
    <TextBox.Text>
        <MultiBinding Converter="{StaticResource PriorityMultiValueConverter}">
            <Binding Path="LastNameNull" />
            <Binding Path="FirstName" />
        </MultiBinding>
    </TextBox.Text>
</TextBox>
票数 4
EN

Stack Overflow用户

发布于 2009-12-17 00:08:27

您希望它在什么情况下使用回退值?您如何确定绑定已失败?绑定仍然有效,即使它绑定到空值。

我认为,如果绑定返回null,那么使用转换器将其转换为默认值可能是一个很好的选择。不过,我不确定你怎么能缺省为另一个限定值。

查看converters here

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1915562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档