1

次のように、ポップアップを開くメニュー付きのリボンがあります。

ここに画像の説明を入力

写真のようなポップアップを表示するボタンをクリックする前に、リボンのアクティブなタブを変更するいくつかのロジックが (方法とは関係なく) トリガーされます。これにより、前のタブのポップアップが表示されたままになり、その後ろに新しいタブが表示されるという状況が発生することがあります。ポップアップをマウスで入力すると、StackOverFlowException が発生します。

前のタブを「非アクティブ化」することを考えていましたが、何が間違っているのか誰か知っていますか?

4

1 に答える 1

0

私が望んでいたことを達成するために以下を追加しました:) このソリューションは実装固有です(つまり、使用するリボンの実装の調査に基づいています)。実装には、ソースをインスタンスoriginalSourceに設定することで達成できた別のものが必要でした。RibbonWindow

private void DismissRibbonPopup()
{
  // Hack inspired by RibbonHelper; try to close any open RibbonPopups (implicit "from the current ActiveTab").
  UIElement source = Mouse.Captured as UIElement;
  if (source != null)
    source.RaiseEvent(new RibbonDismissPopupEventArgs() { Source = /** I put the RibbonWindow instance here */ });
}

私のコードでは、このメソッドを呼び出してから、新しいタブを に設定しますIsSelected = true; 。余分なコードがほとんどなかったからです。

于 2015-09-02T13:41:26.687 に答える