3

私は独自のエラープロバイダーを持っており、組み込みのWPFのものを使用したくありません。整数にバインドされたテキストボックスがあり、ValidatesOnExceptions=FalseおよびValidatesOnDataErrors=Falseがあります。しかし、テキストボックスに整数以外を入力すると、赤い境界線が表示されます。足りないものはありますか?

4

1 に答える 1

2

いくつかのオプションがあります

  1. データ型を文字列に変更して、データの変換時にデフォルトのコンバーターが例外をスローしないようにすることができます。
  2. 文字列を整数に変換しようとしたときに例外をスローしないカスタム値コンバーターを使用できます

    class CustomConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return value.ToString();
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            int x = -1;
            Int32.TryParse(value.ToString(), out x);
            return x;
        }
    }
    
  3. UpdateSourceTriggerを明示的に変更して、データバインディングがいつ更新されるかを正確に制御できます。

  4. Expression Blendを使用して、TextBoxテンプレートのローカルコピーを編集し、バインディング検証エラーに関連するすべてのものを削除できます。

于 2012-07-31T16:22:54.940 に答える