如何将WPF控件属性与ViewModels的不同属性动态绑定
本文关键字:属性 动态绑定 ViewModels WPF 控件 | 更新日期: 2023-09-27 18:22:23
例如:我们需要将RadioButton Value属性与ViewModel的两个不同属性动态绑定。
查看模型
public class MyViewModel
{
//Property-1 to bind with RadioButton
public bool Accepted
{
get;
set;
}
//Property-2 to bind with RadioButton
public bool Enable
{
get;
set;
}
//Property to Identify which property should bind with radio button.
public bool Mode
{
get;
set;
}
}
Xaml
<RadioButton Value="{Binding Accepted, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
是否可以动态绑定Accepted或Enable属性根据Mode属性?
- 一个解决方案是使用IMultiValueConverter和MultiBinding。这是一个合适的方法吗
您不能更改视图模型中的绑定。然而,您可以创建一个新的属性,将其绑定到该属性,然后将其值委托给正确的其他值,例如:
public class ViewModel
{
public bool Prop1 { get; set; }
public bool Prop2 { get; set; }
public bool Use2 { get; set; }
public bool Prop
{
get { return Use2 ? Prop2 : Prop1; }
set
{
if (Use2)
Prop2 = value;
else
Prop1 = value;
}
}
}
当然,这个例子缺少INotifyPropertyChanged
的实现细节。