人!
我有类似的东西:
我需要编写一些验证逻辑。主要规则 - 用户只能选择相邻的复选框。例如1; 2; 3或2; 3或3; 4等(不要选择1; 3或1; 2; 4等(无间隙))。 我不知道,我怎么能简单地实现这个算法。
我使用MVVM方法,这是我的ViewModel类的一部分(简称):
public bool FirstIsCheck {get;set;}
public bool SecondIsCheck {get;set;}
public bool ThirdIsCheck {get;set;}
public bool FourthIsCheck {get;set;}
答案 0 :(得分:0)
感谢所有人的好主意,尤其是“范围”。 我喜欢2个组合框(来自/来自)变体,之后我在滑块控件上看到了2个拇指(f {。范围滑动在http://avaloncontrolslib.codeplex.com/中)
但在我的解决方案中,我将使用另一种方法(仅因为我有4个元素): 用户选择一些复选框(正确或不正确),之后(当他尝试保存更改时,f.e。)他可能会看到错误消息。 IsChecked值将添加到集合中,我们会找到Max of Min值+检查它们。 (在该示例中,我使用字符串来保存最终结果)
string temp = "";
List<int> range = new List<int>();
if (FirstIsCheck) { temp += 1 + ";"; range.Add(1); }
if (SecondIsCheck) { temp += 2 + ";"; range.Add(2); }
if (ThirdIsCheck) { temp += 3 + ";"; range.Add(3); }
if (FourthIsCheck) { temp += 4 + ";"; range.Add(4); }
Result = temp;
if(range.Count>1)
{
var max = range.Max();
var min = range.Min();
if (max - min == 2 && range.Count != 3) throw new Exception();
if (max - min == 3 && range.Count != 4) throw new Exception();
}
在我的情况下,它有效,但如果你有更多的元素,那将是丑陋的。 (并且你必须考虑使用一些滑块控件,或2个组合框/ TextBox从 - 到字段)