使用wpf中的触发器更改绑定mvvm属性



我想了解是否可以使用触发器更改控件绑定的属性…

所以我有两个属性,例如在ViewModel和使用一个触发器取决于是否第一个属性为null,该控件将绑定第一个属性,如果不是null,或绑定第二个。

这是可能实现的吗?也会与命令一起工作吗?

提前感谢!

我通常不建议尝试这种方法。另一种IMO更简洁的方法是使用触发器来改变相关对象的可见性。

这允许您折叠控件并使用适当的绑定设置创建一个不同的控件,该控件基于一对触发器可见。这样做的好处是你不必不断刷新绑定,另外,你的接口与ViewModel中的属性有1-1的相关性。

这也适用于命令,因为你的命令对象(即:按钮)可以切换到新的合适的

也许你可以使用ValueConverter的多重绑定:

<MultiBinding Converter="{StaticResource MyConverter}">
    <Binding Path="FirstProperty" />
    <Binding Path="SecondProperty" />
</MultiBinding>

MyConverter应该计算并返回正确的属性:

public class MyConverter: IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        return values[0] ?? values[1];
    }
    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

在ViewModel中使用单个属性,如果第一个属性的值不为空,则提供第一个属性的值,否则提供第二个属性的值,这样会更简单。比如:

public String BindToMe {
    get { return FirstProperty ?? SecondProperty; }
}

这个对你有用吗?

为什么PriorityBinding不能满足这个要求?

最新更新