ページ変数を指定せずにカスタムボタンのイベントをオーバーライドする方法

ヴィンセント

クラスCustomButtonから継承しを作成しましたButtonそして、私が作成したいくつかのイベントなどGotFocusLostFocusなど

public sealed class CustomButton : Button
{
    public CustomButton()
    {
        this.DefaultStyleKey = typeof(CustomButton);
    }

    protected override void OnApplyTemplate()
    {
        this.GotFocus += CustomButton_GotFocus;
        this.LostFocus += CustomButton_LostFocus;

        base.OnApplyTemplate();

    }

    private void CustomButton_LostFocus(object sender, RoutedEventArgs e)
    {
        //some common behavior code
    }

    private void CustomButton_GotFocus(object sender, RoutedEventArgs e)
    {
        //some common behavior code
    }
}

それから私CustomButtonはいくつかのページでこれを使用しました。しかし、一部の特定のページでCustomButtonGotFocusLostFocusイベントを実行したくありません

では、指定されたページでこれらのイベントをオーバーライドするにはどうすればよいですか?

指定されたページでadd GotFocusLostFocuseventを試しましたが、最終的にで一般的なコードの動作が実行されCustomButtonます。

ニコ・チュー-MSFT

要件については、DependencyPropertyを制御するGotFocusか、LostFocusイベントを実行するかどうかを指定できます。

例えば:

public class CustomButton : Button
{
    public CustomButton()
    {
        this.DefaultStyleKey = typeof(Button);
        Current = this;
    }
    private static CustomButton Current;
    protected override void OnApplyTemplate()
    {     
        base.OnApplyTemplate();
    }


    public bool EnableDetected
    {
        get { return (bool)GetValue(EnableDetectedProperty); }
        set { SetValue(EnableDetectedProperty, value); }
    }

    // Using a DependencyProperty as the backing store for EnableDetected.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty EnableDetectedProperty =
        DependencyProperty.Register("EnableDetected", typeof(bool), typeof(CustomButton), new PropertyMetadata(0, new PropertyChangedCallback(OnValueChanged)));

    private static void OnValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {

        if ((bool)e.NewValue  == true)
        {
            Current.GettingFocus += Current_GettingFocus;
        }
        else
        {
            Current.GettingFocus -= Current_GettingFocus;
        }
    }

    private static void Current_GettingFocus(UIElement sender, GettingFocusEventArgs args)
    {

    } 
}

使用法

 <local:CustomButton Content="Btn"  EnableDetected="true" />

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ページ変数を指定せずにカスタムボタンのイベントをオーバーライドする方法

分類Dev

カスタムテーマを作成せずにExt.jssass / css変数をオーバーライドする

分類Dev

単一ページ、カルーセルスタイル、スライドWebサイト:デフォルトでホームスライドを使用せずに、ブラウザの戻るボタンで前のスライドに移動しますか?

分類Dev

ModX:コンテンツをオーバーライドせずにデータベースを更新する方法

分類Dev

jQueryカスタムイベントをオーバーライドする

分類Dev

オプションのイベントハンドラーをカスタムボタンに渡す

分類Dev

SYMFONYカスタムCONSTRAINT->カスタムCONSTRAINTに変数を渡す/フォームフィールドにバインドされたCONSTRAINTがアノテーションのCONSTRAINTをオーバーライドする方法

分類Dev

Polymer1.0-カスタム要素を作成せずにイベントハンドラーをバインドする

分類Dev

イオンスライドとボタンをイオン3の同じページに収める方法

分類Dev

高いグラフ-凡例のクリックをオーバーライドし、イベントをカスタムロジックにホバーします

分類Dev

ロボットフレームワークを使用してWeb自動化を行うときに、カスタムライブラリからWebドライバーオブジェクトをインスタンス化する方法

分類Dev

カスタムFiremonkeyコントロールのクリックイベントをオーバーライドする方法

分類Dev

ターゲットを閉じる方法=ドライバーを閉じずにセレンの空白ページ?

分類Dev

Flink-withTimestampAssignerを使用してイベントペイロードから時間を取得する方法(Kafkaタイムスタンプを使用せずに)

分類Dev

データベース情報を含むphpページにリダイレクトするクライアント側のボタンを作成する方法

分類Dev

テンプレートタイプを指定せずにジェネリック抽象クラスのオブジェクトを宣言する方法

分類Dev

Unityでカスタムインスペクターにオブジェクト参照を追加させる方法

分類Dev

Kenticoの新しいWebサイトウィザードにカスタムマスターページオプションを追加する方法

分類Dev

複数のバックグラウンドxmlを使用せずにカスタムトーストメッセージのバックグラウンドを変更するにはどうすればよいですか?

分類Dev

IsEnabledCoreをオーバーライドする新しいクラスを作成せずにRichtextboxに追加されたボタンを有効にする方法は?

分類Dev

複数のラジオ ボタン値をコントローラー アクションにバインドする方法

分類Dev

セレンWebドライバーの同じページにある複数のボタンからボタンをクリックする方法は?

分類Dev

Visual Studio Team Servicesエラー:「指定されたコマンドレットのターゲットをWindowsクライアントベースのオペレーティングシステムにすることはできません。」

分類Dev

カスタムビューをxamarinフォームのページモデルにバインドする

分類Dev

Vue JSの各リストにラジオボタンがあるリストの場合に(v-model)データをバインドする方法

分類Dev

ラジオボタンの値を取得し、コードイグナイターのデータベースに挿入する方法は?

分類Dev

等しいをオーバーライドせずにカスタムの等しい関数を使用して2つのコレクションの違いを取得する簡単な方法はありますか?

分類Dev

日付を変更せずにDateオブジェクトのタイムゾーンを変更する

分類Dev

プライベートコンストラクターにテストカバレッジを追加する方法

Related 関連記事

  1. 1

    ページ変数を指定せずにカスタムボタンのイベントをオーバーライドする方法

  2. 2

    カスタムテーマを作成せずにExt.jssass / css変数をオーバーライドする

  3. 3

    単一ページ、カルーセルスタイル、スライドWebサイト:デフォルトでホームスライドを使用せずに、ブラウザの戻るボタンで前のスライドに移動しますか?

  4. 4

    ModX:コンテンツをオーバーライドせずにデータベースを更新する方法

  5. 5

    jQueryカスタムイベントをオーバーライドする

  6. 6

    オプションのイベントハンドラーをカスタムボタンに渡す

  7. 7

    SYMFONYカスタムCONSTRAINT->カスタムCONSTRAINTに変数を渡す/フォームフィールドにバインドされたCONSTRAINTがアノテーションのCONSTRAINTをオーバーライドする方法

  8. 8

    Polymer1.0-カスタム要素を作成せずにイベントハンドラーをバインドする

  9. 9

    イオンスライドとボタンをイオン3の同じページに収める方法

  10. 10

    高いグラフ-凡例のクリックをオーバーライドし、イベントをカスタムロジックにホバーします

  11. 11

    ロボットフレームワークを使用してWeb自動化を行うときに、カスタムライブラリからWebドライバーオブジェクトをインスタンス化する方法

  12. 12

    カスタムFiremonkeyコントロールのクリックイベントをオーバーライドする方法

  13. 13

    ターゲットを閉じる方法=ドライバーを閉じずにセレンの空白ページ?

  14. 14

    Flink-withTimestampAssignerを使用してイベントペイロードから時間を取得する方法(Kafkaタイムスタンプを使用せずに)

  15. 15

    データベース情報を含むphpページにリダイレクトするクライアント側のボタンを作成する方法

  16. 16

    テンプレートタイプを指定せずにジェネリック抽象クラスのオブジェクトを宣言する方法

  17. 17

    Unityでカスタムインスペクターにオブジェクト参照を追加させる方法

  18. 18

    Kenticoの新しいWebサイトウィザードにカスタムマスターページオプションを追加する方法

  19. 19

    複数のバックグラウンドxmlを使用せずにカスタムトーストメッセージのバックグラウンドを変更するにはどうすればよいですか?

  20. 20

    IsEnabledCoreをオーバーライドする新しいクラスを作成せずにRichtextboxに追加されたボタンを有効にする方法は?

  21. 21

    複数のラジオ ボタン値をコントローラー アクションにバインドする方法

  22. 22

    セレンWebドライバーの同じページにある複数のボタンからボタンをクリックする方法は?

  23. 23

    Visual Studio Team Servicesエラー:「指定されたコマンドレットのターゲットをWindowsクライアントベースのオペレーティングシステムにすることはできません。」

  24. 24

    カスタムビューをxamarinフォームのページモデルにバインドする

  25. 25

    Vue JSの各リストにラジオボタンがあるリストの場合に(v-model)データをバインドする方法

  26. 26

    ラジオボタンの値を取得し、コードイグナイターのデータベースに挿入する方法は?

  27. 27

    等しいをオーバーライドせずにカスタムの等しい関数を使用して2つのコレクションの違いを取得する簡単な方法はありますか?

  28. 28

    日付を変更せずにDateオブジェクトのタイムゾーンを変更する

  29. 29

    プライベートコンストラクターにテストカバレッジを追加する方法

ホットタグ

アーカイブ