2014-01-21 3 views
1

남자! 나는 몇 가지 검증 로직을 작성해야인접 체크 박스에 대한 유효성 검사 로직

4 Combobox

:

나는 그런 일이있다. 기본 규칙 - 사용자는 인접한 확인란 만 선택할 수 있습니다. 예 : 1, 2, 3 또는 2, 3 또는 3, 4 등 (1, 3 또는 1, 2, 4 등을 선택하지 마십시오 (간격 없음). 그리고 나는 그 알고리즘을 어떻게 간단하게 구현할 수 있을지 전혀 모른다.

I 사용 MVVM 접근과이 (짧은) 내 뷰 모델 클래스의 일부입니다 특히 "범위"에 대한 좋은 아이디어를 모든

public bool FirstIsCheck {get;set;} 
public bool SecondIsCheck {get;set;} 
public bool ThirdIsCheck {get;set;} 
public bool FourthIsCheck {get;set;} 
+1

체크 된 값을 부울 배열로 만들고 모든 값이 false인지 또는 루프에 인접한 참 값이 있는지 확인하십시오 . 여기에 UI의 악몽이 숨어 있습니다. 사용자는 인접한 상자 만 확인할 수 있음을 어떻게 알 수 있습니까? 따라서 위의 로직을 사용하여 상자를 선택할 때 인접하지 않은 확인란을 회색으로 표시해야합니다. 이것은 유효하지 않은 체크 박스를 체크하는 것을 배제하고 로직을 사용자에게 명확하게 만듭니다. –

+0

루프의 아이디어가 재미있을 것 같습니다. 이 컨트롤은이 규칙을 알아야하는 특수 사용자가 사용합니다 (실수 일 수 있음) – chromigo

+0

사용자는 하나의 'CheckBox'만 선택할 수 있거나 반드시>> 2 여야합니까? –

답변

0

감사합니다. 나는 변형 (에 /에서) 2 콤보를 좋아한다, 그 후에 내가이 엄지 손가락 (http://avaloncontrolslib.codeplex.com/에서 철 RangeSlider)

와 슬라이더 컨트롤에 보았지만 내 솔루션에 나는 (내가 4 개 요소를 가질 만하기 때문에 다른 방법을 사용합니다) : 사용자가 일부 체크 박스를 선택하고 (정확하거나 틀린 경우), 그 후에 (변경 사항을 저장하려고 할 때) 오류 메시지가 표시 될 수 있습니다. 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 개를 사용해야한다고 생각해야합니다)

관련 문제