代码之家  ›  专栏  ›  技术社区  ›  Bryan Anderson

如果返回的值为Null,如何使PriorityBinding失败?

wpf
  •  7
  • Bryan Anderson  · 技术社区  · 14 年前

    我有一个 PriorityBinding

    <PriorityBinding FallbackValue="Bindings were null">
        <Binding Path="Foo" />
        <Binding Path="Bar" />
    </PriorityBinding>
    

    我想这样做,如果Foo为null,它将使用Bar,如果两者都为null,它将使用FallbackValue。但是,null是此属性的有效值,因为它只需要一个对象。

    当值为null时,有没有办法使PriorityBinding前进到下一个绑定?我更喜欢用XAML实现,但如果不行,我就为它做一个转换器。

    编辑

    我只是为它写了一个转换器

    public class NullToDependencyPropertyUnsetConverter 
        : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return value ?? DependencyProperty.UnsetValue;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
    
    1 回复  |  直到 11 年前
        1
  •  5
  •   Goblin    14 年前

    如果绑定值为null,我会使用valueconverter返回unset值。

    如果要在不同类型的对象之间共享数据模板,则PriorityBindings更有用。