如何动态绑定WPF Controls属性与ViewModels不同的属性?

时间:2015-11-18 06:30:24

标签: c# wpf

例如: 我们需要使用ViewModel的两个不同属性动态绑定RadioButton Value属性。

查看模型

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。这是一种正确的方法吗?

1 个答案:

答案 0 :(得分:3)

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

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