同じ 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 が含まれます。何か案は ?