RibbonGallery已在.net 4.6中禁用

Sat*_*ish 11 .net wpf wpf-controls

我正在使用WPF中的RibbonController创建一个应用程序.

它工作正常,直到我安装.net 4.6.然后我的"RibbonGallery"处于禁用状态(Viewpoints Drop Down菜单).我试图通过Code启用但没有运气;(.

<Custom:RibbonGallery SelectedValue="Entrancelobby" SelectedValuePath="Content" ScrollViewer.VerticalScrollBarVisibility="Visible" MaxHeight="500">
        <Custom:RibbonGalleryCategory Name="viewpointsList" FontFamily="Times New Roman" FontSize="14">  
              <Custom:RibbonGalleryItem Content="Entrancelobby" Foreground="Black" />
              <Custom:RibbonGalleryItem Content="Entrancelobby 01" Foreground="Black"/> 
        <Custom:RibbonGalleryCategory>
</Custom:RibbonGallery>
Run Code Online (Sandbox Code Playgroud)

请参阅附件 4.5没有问题 .Net 4.5(工作)

.Net 4.6(问题) 在此输入图像描述

提前致谢...

Sam*_*SFT 17

这实际上是RibbonGallery中的一个错误,恰好是4.6.1中的新逻辑暴露出来的.错误是RG没有正确初始化其内部状态,因此如果有人调用CoerceValue(IsEnabledProperty),它会将值强制为false(即禁用图库).例如,调用ribbonGallery.IsEnabled = true;实际上将禁用RG(即使在4.0中).

.Net 4.6.1具有更好的逻辑,用于将IsEnabled传播给后代.此逻辑最终调用ribbonGallery.CoerceValue(IsEnabledProperty),由于该错误而禁用RG.

有一个解决方法:更改RG的命令.这导致RG正确地重置其内部状态,以便未来的强制做正确的事情.例如:

ribbonGallery.Command = ApplicationCommands.Print;   // arbitrary command
ribbonGallery.Command = null;                        // don't keep the command
Run Code Online (Sandbox Code Playgroud)