RibbonGallery 在 .net 4.6 中被禁用
RibbonGallery disabled in .net 4.6
我正在 WPF 中使用 RibbonController 创建应用程序。
在我安装 .net 4.6 之前它工作正常。然后我的 "RibbonGallery" 处于禁用状态(Viewpoints Drop Down menu)。我也尝试通过代码启用,但没有运气 ;(.
<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>
见附件
4.5 没有问题
.Net 4.6(问题)
提前致谢...
这其实是RibbonGallery的一个bug,恰好是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
RibbonGallery 中的禁用项与我遇到的问题相同,一旦 IsEnabled 设置为 false,我就无法再次启用。自从在 PC 上更新到 Net 4.6 后,这在以前是有效的并且注意到了。我有 运行 几年前的一个旧程序,没有任何重新编译,它也遭受同样的命运。因此,即使目标是 Net 4.5,它也会出现与安装的 PC .Net 相关的相同问题。如果 PC 使用 Windows 10 Net 框架不能回滚到 Net 4.5,因为它使用 4.6 最低对吗?
尝试将命令设置为空,但未成功。已尝试在 PC 上安装 Net 4.6.1 和各种目标组合但未成功。对我来说,我想我会撕掉 Microsoft ribbon 的东西,它总是看起来有问题,浪费了我的开发时间。
我正在 WPF 中使用 RibbonController 创建应用程序。
在我安装 .net 4.6 之前它工作正常。然后我的 "RibbonGallery" 处于禁用状态(Viewpoints Drop Down menu)。我也尝试通过代码启用,但没有运气 ;(.
<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>
见附件
4.5 没有问题
.Net 4.6(问题)
提前致谢...
这其实是RibbonGallery的一个bug,恰好是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
RibbonGallery 中的禁用项与我遇到的问题相同,一旦 IsEnabled 设置为 false,我就无法再次启用。自从在 PC 上更新到 Net 4.6 后,这在以前是有效的并且注意到了。我有 运行 几年前的一个旧程序,没有任何重新编译,它也遭受同样的命运。因此,即使目标是 Net 4.5,它也会出现与安装的 PC .Net 相关的相同问题。如果 PC 使用 Windows 10 Net 框架不能回滚到 Net 4.5,因为它使用 4.6 最低对吗?
尝试将命令设置为空,但未成功。已尝试在 PC 上安装 Net 4.6.1 和各种目标组合但未成功。对我来说,我想我会撕掉 Microsoft ribbon 的东西,它总是看起来有问题,浪费了我的开发时间。