我试图了解是否可以使用触发器更改控件绑定的属性...
所以我在ViewModel中有两个属性,并且如果第一个属性为null,则使用触发器,如果不为null,则控件将绑定第一个属性,或者绑定第二个属性。
这有可能实现吗?也可以使用命令吗?
提前致谢!
答案 0 :(得分:1)
我通常不建议尝试这个。另一种IMO清洁方法是使用触发器来改变相关对象的可见性。
这允许您折叠控件并使用适当的绑定设置创建另一个控件,该控件基于一对触发器可见。这里的优点是您不必不断刷新绑定,而且,您的界面与ViewModel中的属性具有1-1相关性。
这也适用于命令,因为您的命令对象(即:按钮)可以切换到新的命令对象。
答案 1 :(得分:0)
在ViewModel中有一个属性,如果它不是null,则提供第一个属性的值,或者第二个属性的值,这将更简单。类似的东西:
public String BindToMe {
get { return FirstProperty ?? SecondProperty; }
}
这对你有用吗?
答案 2 :(得分:0)
为什么PriorityBinding无法满足此要求?
答案 3 :(得分:0)
也许你可以使用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();
}
}