0

同じ Kind の SubItems を持つ RibbonApplicationMenuItem があります。サブアイテムはコードによって追加されます。

RibbonApplicationMenuItem を選択した後、クリック イベントの処理中に間違った currentItem が表示されます。

CurrentItem は常に、RibbonApplicationMenuItems のコレクションの最初の要素です。

 private void ApplicationOpenPileList_Click(object sender, RoutedEventArgs e) {
     RibbonApplicationMenuItem SourceApplicationMenu = null;
     RibbonApplicationMenuItem SenderApplicationMenu = null;
     Pile currentPile = null;

     if (e.OriginalSource != null) {
        if (sender is RibbonApplicationMenuItem && e.OriginalSource is RibbonApplicationMenuItem) {
           SenderApplicationMenu = sender as RibbonApplicationMenuItem;
           SourceApplicationMenu = e.OriginalSource as RibbonApplicationMenuItem;               
        }                                   
     }
  }

SourceApplicationMenu にはクリックされた MenuItem が含まれていますが、接続されたオブジェクトがありません。SenderApplicationMenu には、CurrentItem というプロパティを持つ対応する ParentMenuItem が含まれています。

イベントは、メイン要素のリボン ウィンドウの XAML コードで割り当てられます。

        <ribbon:Ribbon.ApplicationMenu>
            <ribbon:RibbonApplicationMenu SmallImageSource="Resources\Icons\Scanner.ico">
                <ribbon:RibbonApplicationMenuItem Header="Neu" ImageSource="Resources\Icons\report_add.png"/>
                <ribbon:RibbonApplicationMenuItem Header="Öffnen" ImageSource="Resources\Icons\open_folder.png"  Name="ApplicationOpenPileList" Click="ApplicationOpenPileList_Click" />                                        
                <ribbon:RibbonApplicationMenuItem Header="Dokumententypen" ImageSource="Resources\Icons\application_form.png" DisplayMemberPath="Name" Click="RibbonApplicationMenuItem_Click"  />
                <ribbon:RibbonApplicationMenuItem Header="Schließen" ImageSource="Resources\Icons\cross.png"/>
            </ribbon:RibbonApplicationMenu>
        </ribbon:Ribbon.ApplicationMenu>

この場合、CurrentItem には常に、対応するオブジェクトを持つ最初の SubItem が含まれます。何か案は ?

4

1 に答える 1

0

問題は非常に単純でした。

SubItems には Click イベント ハンドラーがないため、イベントは上位のハンドラーにルーティングされました。

各アイテムのハンドラーを実装しましたが、すべて問題ありません。

于 2011-09-15T07:18:22.167 に答える