문제

내가 사용하고 유효성 검사에서 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 는 것 때문에 이러한 문제가 발생합니다.당신이해야 할 무엇이 있는지 확인하는 규칙에서 별도로 프로젝트는 어셈블리를 참조할 수 있습니다.이 문제를 해결합니다.

그러나,당신이 다시 추가하는 네임스페이스하기 위해서 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top