Написал MarkupExtension, который конвертит права текущего принципала в Visibility, и с его помощью скрываю пункты меню, которые не дозволено видеть текущему пользователю.
Однако есть проблема — свойство Visibility меню, видимо, вычисляется только один раз, при старте, потому что после смены пользователя меню не становится видимым.
Как заставить его перерисоваться?
Здравствуйте, dmitry_npi, Вы писали:
_>Однако есть проблема — свойство Visibility меню, видимо, вычисляется только один раз, при старте
М.б., то, что привязано к MenuItem.Visibility не оповещает MenuItem об изменении значения?
Либо binding OneTime?
Здравствуйте, dmitry_npi, Вы писали:
_>Здравствуйте.
_>Написал MarkupExtension, который конвертит права текущего принципала в Visibility, и с его помощью скрываю пункты меню, которые не дозволено видеть текущему пользователю.
_>Однако есть проблема — свойство Visibility меню, видимо, вычисляется только один раз, при старте, потому что после смены пользователя меню не становится видимым. _>Как заставить его перерисоваться?
Ну можно написать AttachedProperty и на него уже делать биндинг Visibility, по идее.
markup extensions get evaluated в момент парсинга дерева, не факт, что ваш MenuItem способен отработать вызов Visibility = Visibility.Collapsed, скорее всего в этом дело IsLoaded == false || Template == null внутри меню.
Единственных механизм в WPF способный пережить недозагруженность UI елемента — это байндинг.
Конечно, имеет больше смысла посмотреть на ICommand/RelayCommand и плясать оттуда.
Здравствуйте, DmitryMS, Вы писали:
DMS>вы из пушки по воробьям стрлеяете,
DMS>Конечно, имеет больше смысла посмотреть на ICommand/RelayCommand и плясать оттуда.
Да, спасибо, видимо, через команды будет проще и нагляднее.