RibbonGallery отключен в .net 4.6

Я создаю приложение, использующее RibbonController в WPF.

Он работает нормально, пока я не установил .net 4.6. Затем моя "RibbonGallery" отключена (меню "Выпадающее меню точек" ). Я пытался включить через 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>

См. вложения Нет проблем с 4.5 .NET 4.5 (Working)

.Net 4.6 (выпуск) введите здесь описание изображения

Спасибо заранее...

Ответ 1

На самом деле это ошибка в 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 reset его внутреннему состоянию, так что будущие принуждения поступают правильно. Например:

ribbonGallery.Command = ApplicationCommands.Print;   // arbitrary command
ribbonGallery.Command = null;                        // don't keep the command

Ответ 2

Отключенные элементы в RibbonGallery - это одна и та же проблема. Im get, после того, как IsEnabled установлен в false, я снова не могу включить. Это работало ранее и замечено с момента обновления до Net 4.6 на ПК. Я запускаю старую программу с нескольких лет назад без какой-либо перекомпиляции, и она страдает от той же участи. Таким образом, даже если Net 4.5 нацелен, у него будет та же проблема, что и связанная с ПК .Net. Если ПК использует Windows 10, Net framework can not откатывается обратно в Net 4.5, так как он использует минимум 4.6 минимум?

Попробовал установить команду в значение null, но это не удалось. Tried Net 4.6.1, установленный на ПК, и различные комбинации, нацеленные, но безуспешные. Для меня я думаю, что я разорвал материал ленты Microsoft, который всегда казался ошибкой, когда мне приходилось во времени разработки.