Вычисление MarkupExtension
От: dmitry_npi Россия  
Дата: 25.03.11 13:14
Оценка:
Здравствуйте.

Написал MarkupExtension, который конвертит права текущего принципала в Visibility, и с его помощью скрываю пункты меню, которые не дозволено видеть текущему пользователю.

Однако есть проблема — свойство Visibility меню, видимо, вычисляется только один раз, при старте, потому что после смены пользователя меню не становится видимым.
Как заставить его перерисоваться?
Атмосферная музыка — www.aventuel.net
Re: Вычисление MarkupExtension
От: HowardLovekraft  
Дата: 25.03.11 14:09
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Однако есть проблема — свойство Visibility меню, видимо, вычисляется только один раз, при старте

М.б., то, что привязано к MenuItem.Visibility не оповещает MenuItem об изменении значения?
Либо binding OneTime?
Re: Вычисление MarkupExtension
От: Codechanger Россия  
Дата: 25.03.11 15:14
Оценка:
Здравствуйте, dmitry_npi, Вы писали:

_>Здравствуйте.


_>Написал MarkupExtension, который конвертит права текущего принципала в Visibility, и с его помощью скрываю пункты меню, которые не дозволено видеть текущему пользователю.


_>Однако есть проблема — свойство Visibility меню, видимо, вычисляется только один раз, при старте, потому что после смены пользователя меню не становится видимым.

_>Как заставить его перерисоваться?

Ну можно написать AttachedProperty и на него уже делать биндинг Visibility, по идее.
Re[2]: Вычисление MarkupExtension
От: DmitryMS  
Дата: 25.03.11 16:07
Оценка: 2 (1)
вы из пушки по воробьям стрлеяете, зачем UI логику зарывать так глубоко когда она должна быть на самой поверхности.


1. Попробуйте на кнопке — будет ли работать. Если нет: http://tomlev2.wordpress.com/tag/markup-extension/ вам в помощЬ.

markup extensions get evaluated в момент парсинга дерева, не факт, что ваш MenuItem способен отработать вызов Visibility = Visibility.Collapsed, скорее всего в этом дело IsLoaded == false || Template == null внутри меню.

Единственных механизм в WPF способный пережить недозагруженность UI елемента — это байндинг.

Конечно, имеет больше смысла посмотреть на ICommand/RelayCommand и плясать оттуда.
Re[3]: Вычисление MarkupExtension
От: dmitry_npi Россия  
Дата: 26.03.11 07:42
Оценка:
Здравствуйте, DmitryMS, Вы писали:

DMS>вы из пушки по воробьям стрлеяете,


DMS>Конечно, имеет больше смысла посмотреть на ICommand/RelayCommand и плясать оттуда.


Да, спасибо, видимо, через команды будет проще и нагляднее.
Атмосферная музыка — www.aventuel.net
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.