WPF:绑定层次结构

时间:2010-03-09 11:41:51

标签: wpf data-binding hierarchy

我已经用我的风格定义了一个默认绑定。

例如,我已经配置了我的按钮的可见性绑定,因此如果相对命令无法执行,它必须不可见。

这是我的默认绑定行为

除了我的默认行为,每个视图都可以使用另一个可见性绑定自定义它使用的按钮。

我想合并这两个绑定,以便如果两个中的任何一个说“它不可见”它将不可见!

换句话说,是否可以创建绑定行为层次结构?谢谢!

2 个答案:

答案 0 :(得分:3)

使用MultiBinding连接XAML中的所有不同绑定,并编写自己的IMultiValueConverter,根据需要优先考虑/和/或每个值。没有IMultiValueConverter(或StringFormat,但对你没用),你不能使用MultiBinding。

请注意,PriorityBinding不是您在这里寻找的。

这是你可以使用的valueConverter:

[ValueConversion(typeof(bool), typeof(Visibility))]
public class BooleansAndToVisibilityMultiValueConverter : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        Func<bool, bool, bool> aggregator = (x, y) => x && y;
        bool aggregate = values.Cast<bool>().Aggregate(aggregator);
        return aggregate ? Visibility.Visible : Visibility.Collapsed;
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}

答案 1 :(得分:1)

不,抱歉,在XAML中不可能。

但是,您可以在代码中执行此组合。你可以为此编写一个BindingConverter。