私はRIBBONボタンを動的に構築したい。 RIBBONボタンをクリックするたびに、ユーザーコントロールを開く必要があります。ボタンに付けられたコマンドは、すべてのボタンで同じです。 実行されたプロシージャでは、アクションをアクティブ化したRibbonButtonが必要です。動的にRIBBONを構築する:e.OriginalSourceはもはやタイプではない:RibbonButton
「実行」コマンドは次のようになります。
今private void ExecTmp(object sender, ExecutedRoutedEventArgs e)
{
RibbonButton btn = e.OriginalSource as RibbonButton;
Console.WriteLine("===========e.Orig: " + e.OriginalSource.ToString());
// do something with 'btn'
}
、奇妙なことがあれば、焦点はリボンを残さないように、それが動作することです。 タブ(textBlockなど)でuserControlを入力してから、もう一度ribbonButtonをクリックすると、RibbonButtonにアクセスできなくなります。これは、e.originalSourceがRibbonButtonではなくtextBoxであることを私のコンソールで見ることができます。私のコンソール上の出力は次のようになります。開かれたのTabControlに私はRibbonButtonに、私はTabControlのを開いた場合、TabControlの中にコンボボックスをクリックすることを確認することができ、デバッガで
===========e.Orig: Microsoft.Windows.Controls.Ribbon.RibbonButton
===========e.Orig: System.Windows.Controls.TextBox: 0
===========e.Orig: System.Windows.Controls.TextBox: 0
===========e.Orig: System.Windows.Controls.TextBox: 0
、e.Sourceポイントとe.OriginalSourceはComboBoxを指します。これは奇妙ではないですか?
誰かがこれを説明できますか?