2011-03-21 7 views
3

정수 및 버튼에 바인딩 된 텍스트 상자가있는 양식이 있습니다. 이제 텍스트 상자의 값이 유효하지 않은 경우 버튼을 즉시 비활성화하고 싶습니다.Caliburn Micro : 양식 유효성 검사 오류시 사용 안 함 버튼

일반적으로 VM에 Can() 메서드를 넣고 해당 속성의 설정자에서 NotifyOfPropertyChange를 트리거합니다. 그러나 예를 들어 사용자가 숫자가 아닌 값을 입력하면 텍스트 상자는 유효하지 않지만 속성 설정 기는 호출되지 않으므로 버튼을 알리거나 비활성화 할 수 없습니다.

그래서 사용자가 속성 설정 기가 호출되지 않는 잘못된 값을 입력하면 버튼을 어떻게 비활성화합니까? 방금 시작한 CM의 지식은 제한적입니다.

답변

4

이 문제에 대한 최선의 방법은 속성을 문자열로 바꾸고 속성 설정자에서 정수를 변환하는 데 필요한 문자열을 만드는 것입니다. 변환이 유효하지 않으면 TextBox 값을 기본값으로 재설정 할 수 있습니다. 이렇게하면 재산 세터가 항상 해고됩니다.

모델에 정수 속성이있는 경우 문자열 버전을보기 모델에 배치하는 것이 좋습니다. 비즈니스 모델보다는 UI와 관련이 있기 때문입니다.

사용자가 비 숫자 문자를 입력 할 수 없도록하려면 Extended WPF Toolkit에 포함 된 마스크 된 텍스트 상자 나 제공된 타사 컨트롤 제품군을 사용할 수 있습니다 Telerik 또는 Infragistics에서 제공합니다.

+0

확장 WPF 툴킷 사용 팁을 가져 주셔서 감사합니다. 대신 NumericUpDown을 사용하여 종료되었습니다. –

0

대신 MaskedTextBox를 사용하고 마스크를 정수로 설정하십시오.

+0

이것은 WPF 질문이며 표준 WPF 컨트롤에서 사용할 수있는 MaskedTextBox가 없습니다. – devdigital

관련 문제