bugfix> c# > 投稿

ユーザーとコードビハインドの両方によって操作されるUWPアプリにCheckBoxがあります。ユーザーがチェックすると、 Checked が欲しい発生するイベント。ただし、背後のコードがそれをチェックするとき(以下のように)、起動させたくありません。

checkBoxExample.isChecked = true; //The Checked event should not fire.

送信者(オブジェクト)またはe(RoutedEventArgs)のいずれかからこの情報を取得できると考えましたが、そこにはありません。

回答 1 件
  • イベントを処理しないように設定するフラグを追加することができます。

    private bool _checkedFromCode = false;
    private void CheckboxChecked(object sender, RoutedEventArgs e)
    {
        if ( !_checkedFromCode )
        {
            //your logic
        }
    }
    
    

    今、 IsChecked を設定するとき  コードから:

    _checkedFromCode = true;
    checkBoxExample.IsChecked = true;
    _checkedFromCode = false;
    
    

    イベントは引き続き発生しますが、実際にユーザーインタラクションからのものである場合にのみ処理を制限できます。

    または、 CheckBox のカスタム派生バージョンを作成できます  このシナリオ専用のカスタムイベントがあります。

    RE: Tapped  出来事Tapped を使用した推奨ソリューション  Windows 10はあらゆる種類の入力で動作するため、ユーザーがタッチ、マウス、またはペンを使用していると想定すべきではないため、イベントは機能しません。したがって、唯一の信頼できるイベントは Checked  イベント。使用する入力タイプは重要ではありません。これは特に、アプリにアクセスしやすくするために当てはまります。たとえば、キーボードは Tapped を引き起こしません  イベント。

あなたの答え