1

コンテンツが必要であるというルールを適用する TextBox の添付プロパティを作成する必要があります。

注:残念ながら、データ注釈または SL4 検証フレームワークを使用できません。

テキストボックスはビューのコンテキスト内に表示されます。ビューは多くの場所で再利用されます。ビュー内の TextBoxes 間をタブ移動/クリックすると、「必要な」TextBox が空のままになっている場合にポップアップ メッセージでユーザーに通知する必要があります。

これで、 LostFocusイベントを介してこれが機能します。

    public static readonly DependencyProperty RequiredProperty =
        DependencyProperty.RegisterAttached("Required", typeof(bool), typeof(TextBoxRequiredService),
                                            new PropertyMetadata(OnRequiredChanged));

    public static bool GetRequired(DependencyObject d)
    {
        return (bool)d.GetValue(RequiredProperty);
    }

    public static void SetRequired(DependencyObject d, bool value)
    {
        d.SetValue(RequiredProperty, value);
    }

    private static void OnRequiredChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        TextBox textBox = d as TextBox;
        textBox.LostFocus += (s, args) => {
            if (textBox.Text.Length == 0) {
                MessageBox.Show("Required Field!");
                textBox.Focus();
            }
        };
    }

しかし、これはフォーカスが失われるたびに明らかにトリガーされており、ビューを閉じるなど、検証を実行したくない特定の状況があります。

では、定義可能なアクションの範囲内で Required Text Box サービスを機能させる方法について、何か良い提案 (または例) を持っている人はいますか? それとも、 LostFocusの代わりに使用できる賢い代替手段はありますか?

ありがとう、マーク

4

0 に答える 0