0

現在、プロパティにバインドされているテキストボックスがありbyteます。ユーザーが0から255の間に入力すると、アプリケーションは期待どおりに動作し、プロパティのセッターが実行されます。

ただし、ユーザーが256以上を入力した場合、プロパティのセッターは実行されません。発生するのは、TextBoxの輪郭が赤で表示されることだけです。これは無効な値であることを示していると思います。

しかし、これでは十分ではありません。無効な値であることをユーザーに通知するために、メッセージボックスまたはメモを表示する必要があります。これを実現するには何をする必要がありますか?

4

4 に答える 4

2

ページに検証の概要コントロールを追加する必要があります。

これはデフォルトでは非表示になりますが、検証エラーが発生すると(この場合、255より大きい値が入力された場合のように)、何が問題なのかをユーザーに通知するように表示されます。

WPFで使用できるこのようなコントロールはいくつかあります。それらを評価し、適切なコントロールを選択する必要があります。表示される正確なエラーメッセージを制御するには、データレイヤーにいくつかの属性を設定する必要があります。

于 2012-04-13T14:11:00.073 に答える
1

もう 1 つの可能性は、テキスト ボックスの TextChanged イベントを定義して、テキストが変更されるたびに Int32.Parse を実行することです。値が 255 を超えると、メッセージ ボックスを起動できます。

意地悪になりたい場合は、最大長を 2 文字にして、ユーザーに 16 進数での入力を強制することができます。

于 2012-04-13T14:24:19.553 に答える
0

あなたが求めていることをカバーする記事があります。タイトルはあなたが求めているものと一致しないように見えるかもしれませんが、それはあなたが求めている機能のデモです.

WPF で TextBox ValidationErrors のボタンを無効にする方法

これは、TextBox の周りに赤を表示する方法だけでなく、メッセージも表示する方法を示しています。

于 2012-04-13T15:29:47.137 に答える
0

コントロールまたはウィンドウに検証エラー ハンドラを追加できます。

ウィンドウコンストラクターで:

this.AddHandler(Validation.ErrorEvent, new RoutedEventHandler(OnValidationError));

ハンドラ:

    private void OnValidationError(Object sender, RoutedEventArgs e)
    {
        if (e.OriginalSource is DependencyObject)
        {
            DependencyObject instance = e.OriginalSource as DependencyObject;
            if (Validation.GetHasError(instance))
            {
                System.Collections.ObjectModel.ReadOnlyObservableCollection<ValidationError> errors = Validation.GetErrors(instance);
                // todo build message from errors and display
            }
        }
    }
于 2012-04-13T16:53:20.163 に答える