3
A
답변
7
ErrorProvider은 Winforms 컨트롤입니다. WPF에는 이에 상응하는 것이 없습니다. 그러나 win forms 프로젝트를 만들면 Visual Studio 2008에서 계속 찾을 수 있습니다.
이 문서는 error validation in WPF에 있습니다. 유효성 검사를 처리하는 방법에 대한 유용한 제안 및 아이디어가 있습니다.
4
.NET 3.5에 IDataErrorInfo : Data validation in .NET 3.5에 대한 WPF 지원이 추가되었습니다. ,
0
우선은 이러한 기존 논의를 주석 실례지만, 나는 정확히 같은 질문을했다으로이 도울 수, 시몬의 링크는 제가 사이먼 P.Stevens 튜토리얼을 테스트 할 수
을 "뭔가 시작"하는 데 도움이 솔직히 나는 그다지별로 좋아하지 않았다.
- 오류를 표시 할 때 responseTemplate을 사용하면 응답 속도가 느려진다.
- 동일한 클래스에 대해 규칙이 항상 동일한 경우에만 작동합니다 (제 경우에는 양이있을 수 있는데 때로는 음수가 될 수 있음).
- 국제화 된 응용 프로그램 (필자의 경우)의 경우 외부 라이브러리는 번역 대상인 리소스에 액세스 할 수 없으므로 적절한 메시지를 설정할 수 없습니다. 내 내가 숨기기 할 수있는 조건/디스플레이 도구 설명 및 색상 국경에 관한, 내 텍스트 상자를 설정
하는 BorderBrush 및 도구 설명과 함께 : 내가 MVVM을 사용하여 생각
아주 잘 어떤 상황을 관리하도록되어있다
XAML :
뒤에<TextBox x:Name="tbName" Grid.Column="1" Grid.Row="0" Margin="3" LostFocus="tbName_LostFocus" BorderBrush="{Binding BordertbName}"
Text="{Binding MonRepere.Nom}" ToolTipService.ToolTip="{Binding ErrorName}" ToolTipService.IsEnabled="{Binding ToolTipNameEnable}"/>
코드 (LostFocus = WindowsForm에 사용 누구를 위해 남겨주세요) :
private void tbName_LostFocus(object sender, RoutedEventArgs e)
{
if(tbName.Text=="")
{
this.mv.ErrorName = Properties.Resources.ErrorEmpty;
}
else
{
mv.ErrorName = "";
}
}
다음 뷰 모델 :
private string errorName;
public string ErrorName
{
get { return errorName; }
set
{
errorName = value;
if (value == "")
{
ToolTipNameEnable = false;
BordertbName = Brushes.Gray;
}
else
{
ToolTipNameEnable = true;
BordertbName = Brushes.Red;
}
this.NotifyPropertyChanged("ErrorName");
}
}
private Brush bordertbName;
public Brush BordertbName
{
get { return bordertbName; }
set
{
bordertbName = value;
this.NotifyPropertyChanged("BordertbName");
}
}
private bool toolTipNameEnable;
public bool ToolTipNameEnable
{
get { return toolTipNameEnable; }
set
{
toolTipNameEnable = value;
this.NotifyPropertyChanged("ToolTipNameEnable");
}
}
규칙이 상황에 대한 구체적인 때 그냥 매우 유용합니다.