0

Windowsフォームを作成するために、C#で独自のカスタムコードを使用して、個別のxaml定義で検証を行いたいです。カスタム検証を使用したこの検証のようなコードに関するリソースを読みまし

 <Window  xmlns:validators="clr-namespace:MyValidators" [...]/>

そして、これはカスタム コードを含む xaml 定義です。

  <TextBox x:Name="textAge">
    <TextBox.Text>
        <Binding Path="Name">
            <Binding.ValidationRules>
              <validators:StringRangeValidationRule 
                 MinimumLength="1" 
                 ErrorMessage="Age is required." />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

しかし、私は検証がこのようになることを望みます

<TextBox x:Name="textAge" Text="{Binding Path=Age}"/>

別のファイルで、たとえば独自の検証を定義したいValidation.xml

<validation:StringrangeValidationRule target="textAge"  MinimumLength="1" errorMessage="Age is required" />

これを達成する方法は、さまざまな検証ルールを持つ非常に多くの textBox があります。コードを読みにくくする可能性があるテキストボックスと検証の定義を1か所で混同したくありません...

どんな助けでも..

4

2 に答える 2

1

Binding と検証規則をキー付きのスタイルに配置し、それをテキスト ボックスに割り当てることができます。ここに例があります

<Window.Resources>
    <Style x:Key="SomeNameTextBoxStyle" TargetType="{x:Type TextBox}">
        <Style.Setters>
            <Setter Property="Text">
                <Setter.Value>
                    <Binding Path="SomeName">
                        <Binding.ValidationRules>
                            <validators:StringRangeValidationRule 
                                 MinimumLength="1" 
                                 ErrorMessage="SomeName is required." />
                        </Binding.ValidationRules>
                    </Binding>
                </Setter.Value>
            </Setter>
        </Style.Setters>
    </Style>
</Window.Resources>

このスタイルをテキストボックスに割り当てます

<TextBox Style="{StaticResource SomeNameTextBoxStyle}"/>

これはうまくいくはずだと思います。ただし、プロパティを検証する方法も提供する IDataErrorInfo インターフェイスも確認することをお勧めします。

于 2013-05-29T03:03:56.470 に答える