WPF RibbonApplicationMenu:FooterPaneContent与AuxiliaryPaneContent无法识别
问题分析与解决方案
嘿Johan,这个错误的原因很明确——你把FooterPaneContent和AuxiliaryPaneContent放错位置啦!这两个属性是**RibbonApplicationMenu的直接属性**,但你现在把它们嵌套在了一个空的RibbonApplicationSplitMenuItem标签里面,WPF自然找不到对应的附加属性定义。
错误位置回顾
你原来的代码关键错误部分是这样的:
<RibbonApplicationMenu SmallImageSource="images\bestand64.png" KeyTip="A"> <!-- 这里是各种MenuItem和SplitMenuItem --> <RibbonApplicationSplitMenuItem> <RibbonApplicationMenu.FooterPaneContent> <!-- Footer内容 --> </RibbonApplicationMenu.FooterPaneContent> <RibbonApplicationMenu.AuxiliaryPaneContent> <!-- Auxiliary内容 --> </RibbonApplicationMenu.AuxiliaryPaneContent> </RibbonApplicationSplitMenuItem> </RibbonApplicationMenu>
修正后的正确结构
你需要把这两个属性元素直接移到RibbonApplicationMenu的内部,和其他RibbonApplicationMenuItem、RibbonSeparator等元素同级,不需要放在任何SplitMenuItem里。修正后的完整代码片段如下:
<Ribbon.ApplicationMenu> <RibbonApplicationMenu SmallImageSource="images\bestand64.png" KeyTip="A"> <!-- 主菜单选项 --> <RibbonApplicationMenuItem Header="New" Command="New" ImageSource="images\new16.png"></RibbonApplicationMenuItem> <RibbonApplicationMenuItem Header="Open" Command="Open" ImageSource="images\open16.png"></RibbonApplicationMenuItem> <RibbonApplicationMenuItem Header="Save" Command="Save" ImageSource="images\save16.png"></RibbonApplicationMenuItem> <RibbonSeparator></RibbonSeparator> <RibbonApplicationSplitMenuItem Header="Afdrukmogelijkheden" ImageSource="images\printer64.png"> <RibbonApplicationMenuItem Header="Afdrukken" Command="Print" ImageSource="images\printer64.png"></RibbonApplicationMenuItem> <RibbonApplicationMenuItem Header="Afdrukvoorbeeld" Command="PrintPreview" ImageSource="images\preview64.png"></RibbonApplicationMenuItem> </RibbonApplicationSplitMenuItem> <!-- 直接放在RibbonApplicationMenu下,这才是正确的位置 --> <RibbonApplicationMenu.FooterPaneContent> <RibbonButton Command="Close" SmallImageSource="images\close64.png" HorizontalAlignment="Right" Label="Afsluiten"></RibbonButton> </RibbonApplicationMenu.FooterPaneContent> <RibbonApplicationMenu.AuxiliaryPaneContent> <RibbonGallery Name="MRUGallery" CanUserFilter="False" ScrollViewer.VerticalScrollBarVisibility="Auto" SelectionChanged="MRUGallery_SelectionChanged"> <RibbonGalleryCategory Name="MRUGalleryCat" Header="Recent Documents"> </RibbonGalleryCategory> </RibbonGallery> </RibbonApplicationMenu.AuxiliaryPaneContent> </RibbonApplicationMenu> </Ribbon.ApplicationMenu>
为什么这样改?
在WPF的XAML中,元素的附加属性或者属性元素必须直接归属到对应的父元素上。FooterPaneContent和AuxiliaryPaneContent是RibbonApplicationMenu用来定义底部面板和辅助面板内容的专属属性,它们的作用域就是RibbonApplicationMenu本身,不能被嵌套在其他菜单子项里。
这样调整后,WPF就能正确识别这两个属性,你遇到的错误应该就会消失啦!
内容的提问来源于stack exchange,提问作者Johan Maes
相关产品推荐
相关产品推荐

