我已经用我的风格定义了一个默认绑定。
例如,我已经配置了我的按钮的可见性绑定,因此如果相对命令无法执行,它必须不可见。
这是我的默认绑定行为。
除了我的默认行为,每个视图都可以使用另一个可见性绑定自定义它使用的按钮。
我想合并这两个绑定,以便如果两个中的任何一个说“它不可见”它将不可见!
换句话说,是否可以创建绑定行为层次结构?谢谢!
答案 0 :(得分:3)
使用MultiBinding连接XAML中的所有不同绑定,并编写自己的IMultiValueConverter,根据需要优先考虑/和/或每个值。没有IMultiValueConverter(或StringFormat,但对你没用),你不能使用MultiBinding。
请注意,PriorityBinding不是您在这里寻找的。 p>
这是你可以使用的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。