Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[WPF] Сделать кнопку недоступной, когда связанная с ней команда становится равной NULL
|
|||
|---|---|---|---|
|
#18+
Добрый день Есть форма, DataContext которой - объект ViewModel. Одно из свойств этого объекта - экземпляр ICommand - привязано к кнопке, расположенной на форме. Когда ViewModel становится равным NULL, кнопка, к которой привязана команда ViewModel, должна стать недоступной. Как это реализовать декларативно? Учебник читал, но триггеры работать не хотят. На всякий случай прилагаю простой проект на VS2010. Кто-то может сказать, как для него в виде триггеров реализовать приведенные ниже условия? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 17:40 |
|
||
|
[WPF] Сделать кнопку недоступной, когда связанная с ней команда становится равной NULL
|
|||
|---|---|---|---|
|
#18+
Блин, прошу прощения, упустил кое что. Вот такие условия: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 17:41 |
|
||
|
[WPF] Сделать кнопку недоступной, когда связанная с ней команда становится равной NULL
|
|||
|---|---|---|---|
|
#18+
Не уверен, что понял полностью нужный функционал. посмотри CompositeCommand с IActiveAware ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2010, 22:39 |
|
||
|
[WPF] Сделать кнопку недоступной, когда связанная с ней команда становится равной NULL
|
|||
|---|---|---|---|
|
#18+
Спасибо, уже разобрался. На всякий случай раскрою мысль. Есть приложение наподобие броузера - окно с набором вкладок. У каждой страницы есть стек рабочих областей (посещенных страниц), только одна из них является видимой (опять же, как в броузере - вперед-назад в рамках открытой вкладки). Соответственно, модель данных: MainModel содержит коллекцию TabModel, каждый элемент которой - коллекцию PageModel. Активной вкладке соответствует MainModel.CurrentTab, активной странице - TabModel.CurrentPage. Чтобы перезагрузить содержимое текущей страницы, вызывается команда PageModel.ReloadCommand. Соответственно, в главном окне имеется панель кнопок с привязками вида: Код: plaintext 1. Вообще для данной конкретной задачи вопрос уже неактуален, она была тестовой. Нов общем и целом - вот так примерно. Для простой кнопки подошло вот такое дело: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2010, 21:11 |
|
||
|
[WPF] Сделать кнопку недоступной, когда связанная с ней команда становится равной NULL
|
|||
|---|---|---|---|
|
#18+
На мой взгляд, активацией кнопки должна заведовать ViewModel, a не в триггер. В общем случае логика может быть сложной и лучше ее не выносить во View. Как я понял, описана нелинейная навигация. Как ее реализовывал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2010, 23:43 |
|
||
|
[WPF] Сделать кнопку недоступной, когда связанная с ней команда становится равной NULL
|
|||
|---|---|---|---|
|
#18+
Целиком с Вами согласен - почти вся подобная логика вынесена во ViewModel. В данном конкретном случае речь идет о том, что если в некоторой ситуации кнопка ничего не делает - пусть она будет недоступной - роль ViewModel здесь примерно равна 0. Уточните вопрос про нелинейную навигацию, мне не совсем ясен смысл термина. Если речь идет о структурной навигации с использованием Page/NavigationWindow, то я этим делом не пользовался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2010, 00:20 |
|
||
|
|

start [/forum/topic.php?fid=21&fpage=60&tid=1442594]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
34ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 133ms |

| 0 / 0 |
