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, который всегда казался ошибкой, когда мне приходилось во времени разработки.