如何将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。这是一个合适的方法吗

如何将WPF控件属性与ViewModels的不同属性动态绑定

您不能更改视图模型中的绑定。然而,您可以创建一个新的属性,将其绑定到该属性,然后将其值委托给正确的其他值,例如:

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的实现细节。