绑定
<CheckBox Name="check1" IsChecked="{Binding Path=myViewModelProperty}" />
<CheckBox Name="check2" IsChecked="{Binding Path=myViewModelProperty}" />
<CheckBox Name="check3" IsChecked="{Binding Path=myViewModelProperty}" />
<CheckBox Name="check4" IsChecked="{Binding Path=myViewModelProperty}" />
然后,在视图模型:
public Boolean myViewModelProperty
{
get { ... }
set { ... }
}
另外在视图模型,在需要的时候:
this.RaisePropertyChanged<Boolean>(() => this.myViewModelProperty);
,如果你想(即使我不明白4复选框以相同的属性^^)您可以在一个属性绑定尽可能多元素的值
MultiBinding用于将ONE元素值绑定到MANY ViewModel属性。
编辑:考虑一个事实,即4复选框必须被转换成一个枚举:
<CheckBox Name="check1" IsChecked="{Binding Path=myViewModelProperty1}" />
<CheckBox Name="check2" IsChecked="{Binding Path=myViewModelProperty2}" />
<CheckBox Name="check3" IsChecked="{Binding Path=myViewModelProperty3}" />
<CheckBox Name="check4" IsChecked="{Binding Path=myViewModelProperty4}" />
public Boolean myViewModelProperty1
{
get
{
return this.b1;
}
set
{
this.b1 =value;
this.EvaluateMyEnum();
}
}
public Boolean myViewModelProperty2
{
get
{
return this.b2;
}
set
{
this.b2 =value;
this.EvaluateMyEnum();
}
}
public Boolean myViewModelProperty3
{
get
{
return this.b2;
}
set
{
this.b2 =value;
this.EvaluateMyEnum();
}
}
public Boolean myViewModelProperty4
{
get
{
return this.b4;
}
set
{
this.b4 =value;
this.EvaluateMyEnum();
}
}
void EvaluateMyEnum()
{
this.MyViewModelEnum = ......;
this.RaisePropertyChanged<MyEnum>(() => this.myViewModelEnum);
}
我知道,但我需要这些布尔转换为枚举。我可以做到这些,但不是随便的方式。 –
您需要的是绑定视图模型的属性上的每个元素值。所以4复选框绑定在虚拟机中的4布尔值。然后,在ViewModel中,执行将4布尔转换为期望的枚举的过程。 – Xaruth
我编辑了我的答案。希望这对你有所帮助。 – Xaruth