9

私は WPF の初心者です。私の UserControl には、次のように 8 つのラベルとそれぞれの 8 つのテキスト ボックスがあります。

1.Label : abc   2.Label : def
  TextBox1 :        TextBox2 :

3.Label :xyz    4. Label : ghi
  Textbox3 :        TextBox4 :

これらの各テキスト ボックス テキスト プロパティには、それぞれのラベル名で終わるテキストが含まれている必要TextBox1.textがあります。xxxx.abcTextBox2.text

詳細が明確であることを願っています.だから、ValidationRuleテキストボックスごとに異なるものを書く必要がありますか??

入力したものはありますか??

4

1 に答える 1

31

ValidationRuleフィールドの末尾を公開するプロパティを使用して、1つの実装を作成してみませんか。例:

public class EndsWithValidationRule : ValidationRule
{
    public string MustEndWith { get; set; }

    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        var str = value as string;
        if(str == null)
        {
            return new ValidationResult(false, "Please enter some text");
        }
        if(!str.EndsWith(MustEndWith))
        {
            return new ValidationResult(false, String.Format("Text must end with '{0}'", MustEndWith));
        }
        return new ValidationResult(true, null);

    }
}

次に、次のように使用できます。

<TextBox x:Name="TextBox1">
    <TextBox.Text>
        <Binding Path="BoundProperty1" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <local:EndsWithValidationRule MustEndWith=".def" />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

<TextBox x:Name="TextBox2">
    <TextBox.Text>
        <Binding Path="BoundProperty2" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <local:EndsWithValidationRule MustEndWith=".abc" />
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>
于 2013-01-23T13:52:06.270 に答える