데이터 유효성 검사를 수행하는 가장 좋은 방법은 무엇입니까? 뷰 모델에서 유효성 검사를 수행하거나 모델에서 유효성 검사를 수행해야합니까? 또한 MVVM을 사용하여 WPF에서 숫자 (10 진수) 텍스트 상자를 구현하는 가장 좋은 방법은 무엇입니까? MVVM Light 툴킷을 사용하고 있습니다.MVVM 표시 등의 데이터 유효성 검사
답변
사용자에게 의미있는 메시지를 제공하려면 ViewModel의 속성을 String 유형의 TextBox에 바인딩하고 ViewModel에 IDataErrorInfo
을 구현하는 것이 가장 좋습니다.
내 프로젝트에서 나는 이것을 이렇게 사용하고 있습니다. IDataErrorInfo를 구현하는 인터페이스 IValidateable
(이름을 용서하십시오 ...)을 만들었습니다. 내 뷰 모델은이 인터페이스를 구현 : 입력 한 값 내 규칙을 준수하지 않는 경우
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError"
Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90*" />
<ColumnDefinition Width="20" />
</Grid.ColumnDefinitions>
<Border BorderBrush="Red"
BorderThickness="1"
CornerRadius="2.75"
Grid.Column="0">
<AdornedElementPlaceholder Grid.Column="0" />
</Border>
<TextBlock Foreground="Red"
Grid.Column="1"
Margin="0"
FontSize="12"
VerticalAlignment="Center"
HorizontalAlignment="Left">
*
</TextBlock>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
이것은 도구 팁을 표시합니다 :
public interface IValidateable : IDataErrorInfo
{
ObservableCollection<Tuple<string, ValidationError>> InvalidProperties
{ get; }
bool IsValid { get; }
}
내 모든 텍스트 상자는 다음 스타일을 사용합니다.
또한 뷰 모델의 속성에 규칙을 할당 할 수있는 작은 유효성 검사 엔진을 만들었으며 새 값이 설정되면 속성 값을 자동으로 확인하는 기본 클래스를 만들었습니다.
IValidateable
의 인터페이스 구성원은 잘못된 개체를 저장하려고 할 때 사용자에게 의미있는 오류 메시지를 표시하는 데 사용됩니다.
클래스에 IDataError 정보를 구현하고 그 두 가지 속성 오류를 구현하고이 [문자열 COLUMNNAME] 당신은 당신이
public class MainViewModel:ViewModelBase,IDataErrorInfo
{
public string Error
{
}
public string this[string columnName]
{
get
{
string msg=nulll;
switch(columnName)
{
case "MyProperty": //that will be your binding property
//choose your validation logic
if(MyProperty==0||MyProperty==null)
msg="My Property is required";
break;
}
return msg;
}
}
을하려는 바인딩 오류와 함께 두 번째 속성을 구현할 수 있습니다 또한에 ValidateOnError가 = true로 설정
당신의 ViewModel 다른 특성이있는 경우 다음 대해서 typeof 문자열과보기에서 입력 할 수 없습니다 전환 : - 당신의 ViewModel 확인을 위해 IDataErrorInfo를 사용하는 경우 필드
제 경우에는 모델에서이를 수행하기 위해 모델 객체가 서비스에 의해 노출되었습니다. 나는 그 서비스에 대한 통제권을 가지고있다. 유효성 검사는 뷰에 따라 다르므로 뷰 모델에서 수행하는 것이 더 좋을 것이라고 생각합니다. 뷰에서는 속성에 값을 할당해야하지만 다른 경우에는 선택적 일 수 있습니다. – katie77
모델에서도 그렇게 할 수 있습니다! For Example 로컬 뷰 모델의 MyProperty에 바인딩 된 TextBox가 있습니다. 그러나 만약 모델을 누른 다음 Object.of 모델. IDataErrorInfo는 HelperClass에 구현되어야합니다. –
은 다음과 잊지 마세요 속성 유형에 대한 오류가 발생했습니다. 그러면 입력이 viewmodel에 도달하지 않으므로 유효성 검사가 수행되고 뷰 앞의 사용자는 "왜 유효성 검사 오류가 표시되지 않습니까?"라고 생각하는 것입니다.
- 1. MVVM 모델에서 유효성 검사
- 2. DataForm에서 Silverlight MVVM 유효성 검사
- 3. 유효성 검사 실패 wpf mvvm
- 4. WPF 사용자 지정 유효성 검사 MVVM
- 5. MVVM-Helpers 유효성 검사 속성을 사용하는 WPF MVVM 유효성 검사 문제
- 6. 클래스 데이터 유효성 검사
- 7. .net에서 데이터 유효성 검사
- 8. 데이터 유효성 검사 필드에서
- 9. WinForm에서 데이터 유효성 검사
- 10. WPF 데이터 유효성 검사
- 11. 데이터 유효성 검사 최적화
- 12. 효과적인 데이터 유효성 검사
- 13. WPF 데이터 유효성 검사
- 14. WPF의 DataGrid 유효성 검사 문제 - MVVM
- 15. Silverlight 3 유효성 검사 MVVM WCF EF
- 16. xml 유효성 검사 오류 표시
- 17. Silverlight 유효성 검사 - 유효성 검사 메시지 자동 표시
- 18. 도메인 개체 유효성 검사 및 유효성 검사 결과 표시
- 19. jQuery 유효성 검사 - 실제 데이터 유효성 확인
- 20. NSTableView 및 데이터 유효성 검사?
- 21. ASP.Net MVC 데이터 유효성 검사
- 22. 데이터 테이블의 유효성 검사 테이블
- 23. 데이터 주석의 메시지 유효성 검사
- 24. JSON 데이터 유효성 검사/스크럽
- 25. 데이터 유효성 검사 디자인 패턴
- 26. WMF 이미지 데이터 유효성 검사?
- 27. 양식 데이터 유효성 검사 및 JavaScript로 그래픽 표시
- 28. DataGrid 유효성 검사 오류 오류 메시지 표시
- 29. DDD 기반 모델에서 MVVM (WPF)을 사용할 때 유효성 검사
- 30. Monotouch 사용자 입력 데이터 유효성 검사
내 모델의 모델 개체가 서비스에 노출되어 있기 때문에 모델이 아닌보기 모델에서 유효성 검사를 더 많이 기울이고 있습니다. 나는 그 서비스에 대한 통제권을 가지고있다. 유효성 검사는 뷰에 따라 다르므로 뷰 모델에서 수행하는 것이 더 좋을 것이라고 생각합니다. 뷰에서는 속성에 값을 할당해야하지만 다른 경우에는 선택적 일 수 있습니다. – katie77