0

すべてのテキスト ボックスの検証に同じバインディングを適用したいアプリケーションがあります。

<TextBox Height="23" HorizontalAlignment="Left" Margin="71,76,0,0" Name="textBox1" VerticalAlignment="Top" Width="229" Style="{StaticResource ResourceKey=errorMsgStyle}">            
**<TextBox.Text>
            <Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit">
                <Binding.ValidationRules>
                    <Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/>
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>**

    </TextBox>

(**)内はどのテキストボックスでも同じですが、ここはコピー&ペーストを繰り返したくない部分です。

残念ながら、このアプリケーションは MVVM を使用していません。この検証バインディングをテンプレート (またはそのようなもの) として定義し、どこでも使用する方法を教えてください。

4

2 に答える 2

0
<Window.Resources>
    <Binding x:Key="Validation" RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit">
        <Binding.ValidationRules>
            <Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/>
        </Binding.ValidationRules>
    </Binding>
</Window.Resources>

例:

<TextBox Text="{StaticResource Validation}"/>
于 2013-02-26T22:40:40.990 に答える
0

スタイルでバインディングを設定することで、これを行うことができます。

     <Style x:Key="ValidatedTextBox" TargetType="TextBox">
        <Setter Property="Text">
            <Setter.Value>
                <Binding RelativeSource="{RelativeSource Self}" Path="Text" UpdateSourceTrigger="Explicit">
                    <Binding.ValidationRules>
                        <Validators:RequiredFieldValidationRule ErrorMessage="Required field1"/>
                    </Binding.ValidationRules>
                </Binding>
            </Setter.Value>
        </Setter>
    </Style>

もちろん、すべてのテキストボックスは同じソースにバインドされます...これはあなたが望むものかもしれません.

于 2013-02-26T22:29:20.687 に答える