web-dev-qa-db-ja.com

WPF XAMLで名前空間を宣言する方法は?

WPFで、検証ルールを使用してデータバインドされたコントロールの検証入力を使用しようとしています。 wpfウィンドウのコードビハインドファイルには、次のクラスがあります。

public class posintValidationRule : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        string _strInt = value.ToString();
        int _int = -1;
        if (!Int32.TryParse(_strInt, out _int))
            return new ValidationResult(false, "Value must be an integer");
        if (_int < 0)
            return new ValidationResult(false, "Value must be positive");
        return new ValidationResult(true, null);
    }
}

XAMLには、スタイルエラーテンプレートもあります。

XAMLで検証付きのテキストボックスを配置すると:

<TextBox.Text>
    <Binding Path="seconds" UpdateSourceTrigger="PropertyChanged">
        <Binding.ValidationRules>
           <local:posintValidationRule/> 
        </Binding.ValidationRules>
    </Binding>
</TextBox.Text>

コンパイル時にエラーが発生します: '' local 'は宣言されていない名前空間です。'XMLは無効です。

XAMLでlocal:posintValidationRuleを宣言するにはどうすればよいですか?

26
rem

XAMLファイルの先頭で、「ローカル」名前空間を宣言する必要があります。デフォルトのMicrosoftXAMLのものと一緒に。このようなもの:

xmlns:local="clr-namespace:YourApplication"

これは、「posintValidationRule」が「YourApplication」のルート名前空間で定義されていることを前提としていることに注意してください。

51
StrayPointer