를 사용하여 검증 WPF 과 함께 종속성과 스타일 트리거
-
01-07-2019 - |
문제
내가 사용하고 유효성 검사에서 WPF.내가 만들어 NotNullOrEmptyValidationRule 다음과 같습니다:
public class NotNullOrEmptyValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
if (String.IsNullOrEmpty(value as String))
return new ValidationResult(false, "Value cannot be null or empty");
return new ValidationResult(true, null);
}
}
지금,나는 그것을 사용할 필요가에서 내 응용 프로그램이 있습니다.내 응용 프로그램에서.xaml 파일을 나는 선언에 대한 스타일 TextBox.다음은 선언입니다.
<Style x:Key="textBoxStyle" TargetType="{x:Type TextBox}">
<Setter Property="Background" Value="Green"/>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="Background" Value="Red"/>
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self},Path=(Validation.Errors)[0].ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
지금 사용하고 싶다에서 텍스트 상자에서 나를 사용하여 다음과 같은 코드:
<TextBox Style="{StaticResource textBoxStyle}">
<TextBox.Text>
<Binding>
<Binding.ValidationRules>
<NotNullOrEmptyValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
오류에 태그 NotNullOrEmptyValidationRule.XAML 구문 검사는지 확인할 수 있 NotNullOrEmptyValidationRule.나이에도 넣는 네임스페이스만을 보이지 않는 작동합니다.
해결책
내가 보는 바인딩에서 텍스트 상자가 나타나지 않는 경로로 설정의 텍스트는 필드에는 어떤 매핑되는 이 텍스트 상자가 나타나지 않?은 텍스트 상자를 실제로 값을 넣어요?또한,당신을 넣어점에서 유효성 검증 방법은 지금까지 발사되는가?
할 수 있습을 조회하는 방법을 오류 로그에 바인딩 및 그 검토합니다.
다른 팁
당신은 단지 추가해야 합니 xmlns 당신의 창고를 사용하여 참조 확인 규칙.
WPF 에서 객체 완벽하게 괜찮에서 사용할 수 있습니다.
이 규칙이 아니에 정의된 표준 XAML 네임스페이스,당신은 당신을 매핑을 만들의 clr 네임스페이스는 다음과 같이
<Window ...
xmlns:local="clr-namespace:MyNamespaceName">
그리고 당신은 그것을 사용하는 것이다.
<Binding Path=".">
<Binding.ValidationRules>
<local:NotNullOrEmptyValidationRule />
</Binding.ValidationRules>
</Binding>
편집 추가 경로를 문의하여 구속력이 있습니다.당신이 말한 바인딩은 무엇을 묶:)
당신 없이는 라인에 뒤에있는 코드
Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
Me.**NameOfTextBox**.DataContext = Me
End Sub
에서 버그가 있는 Visual Studio 및 Expression Blend 는 것 때문에 이러한 문제가 발생합니다.당신이해야 할 무엇이 있는지 확인하는 규칙에서 별도로 프로젝트는 어셈블리를 참조할 수 있습니다.이 문제를 해결합니다.
그러나,당신이 다시 추가하는 네임스페이스하기 위해서 작동합니다.