public class Myclass { static CheckBox checkBox1 = new CheckBox(); static CheckBox checkBox2 = new CheckBox(); static CheckBox checkBox3 = new CheckBox(); static CheckBox checkBox4 = new CheckBox(); public int SelectedNumber //只读属性 { get { return Myclass.Number(); } } private static int Number() { int i = 0; bool?[] b = { checkBox1.IsChecked, checkBox2.IsChecked, checkBox3.IsChecked, checkBox4.IsChecked }; foreach (bool? a in b) { if (a == true) i++; } return i; } }
public int SelectedNumber { get { return CheckBoxList.Sum(t=> t.IsChecked == true ? 1 : 0); } }CheckBoxList是CheckBox的集合。
{
static CheckBox checkBox1 = new CheckBox();
static CheckBox checkBox2 = new CheckBox();
static CheckBox checkBox3 = new CheckBox();
static CheckBox checkBox4 = new CheckBox();
public int SelectedNumber //只读属性
{
get
{
return Myclass.Number();
}
}
private static int Number()
{
int i = 0;
bool?[] b = { checkBox1.IsChecked, checkBox2.IsChecked, checkBox3.IsChecked, checkBox4.IsChecked };
foreach (bool? a in b)
{
if (a == true)
i++;
}
return i;
}
}
public int SelectedNumber
{
get
{
return CheckBoxList.Sum(t=> t.IsChecked == true ? 1 : 0);
}
}CheckBoxList是CheckBox的集合。
<CheckBox Content="checkbox1" ... IsChecked="{Binding 开关,Converter={StaticResource MyBoolArrayConverter},ConverterParameter=0}}"/>
这里,参数ConverterParameter表示要将控件的IsChecked属性跟bool[]数组的哪一个下标的值绑定。最后,就是自己写一个ValueConverter(两三行代码而已),其Convert方法的value参数表示bool[]数组,parameter参数通过int.Parse((string)parameter)可得到要绑定的index。
IsChecked="{Binding 开关,Converter={StaticResource MyBoolArrayConverter},ConverterParameter=0}}"/>搞不懂语法,就是瞎子摸象了,写出来的代码就是别的了。
不仅仅是控件的属性与数据模型进行(双向)绑定,就是Click事件等等也不应该写代码,而是使用配置的方式,例如写<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ei:CallMethodAction TargetObject="{Binding}" MethodName="刷新正在办任务"/>
</i:EventTrigger>
</i:Interaction.Triggers>MVVM的重大意义在于,强调保证交互界面设计师反复、自由地调整设计体验的能力,避免被那些低级的代码绑架开发进度。因此,软件设计是配置方式的,而不是写代码的。代码是在预先按照设计和一定的接口要求(按照比较低级的文档要求)而写出来的。例如按照ValueConverter的要求、Behavior的要求、ViewModel数据处理(需要实现INotifyPropertyChanged借口)的要求、按照DependencyProperty的要求,等等要求来写代码。然后交互界面设计时可以反复、随便地运用这些代码来组合出程序设计。编写代码是低级的前期工作,程序设计的工作最终由界面设计师来完成。