|
ICommand.CanExecuted - параметр?
|
|||
---|---|---|---|
#18+
Всех привествую. Есть treeview со следующим шаблоном элементов: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Команда удаления каталога (Command="{x:Static local:WireCatalog.RemoveFolderCommand}") должна работать лишь тогда, когда каталог пустой. соотвественно хочу проверить это в CanExecuted, написал примитивную проверку: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
но на входе у CanExecute постоянно null. Что я делаю не так? и сразу второй вопрос - заметил, что wpf дёргает CanExecute в момент отрисовки элемента в дереве, а не в момент отображения контекстного меню, это нормальное поведение? Переползаю на впф с винформс, пока всё как-то в новинку) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2014, 15:56 |
|
ICommand.CanExecuted - параметр?
|
|||
---|---|---|---|
#18+
неделя_на_wpf, ну в момент отрисовки да null. А когда команду вызовите придет ваш item. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2014, 18:54 |
|
ICommand.CanExecuted - параметр?
|
|||
---|---|---|---|
#18+
netivan, в Execute()-то итем придёт, но вот только поскольку в CanExecute() при отображении менюшки пришёл null -> CanExecute возвращает false -> пункт меню не активен -> до вызова дело не дойдёт вовсе) Сама команда работала до тех пор, пока не убрал безвариантное return true в CanExecute() :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2014, 23:27 |
|
ICommand.CanExecuted - параметр?
|
|||
---|---|---|---|
#18+
неделя_на_wpf, проверьте DataContext у MenuItem'ов - он часто слетает, особенно в случае элементов, сгенерированных через DataTemplate: https://www.google.ru/search?q=wpf contextmenu datacontext is null Может помочь привязка датаконтекста самого ContextMenu через DataContext PlacementTarget'а. Или можно использовать DataContextSpy . ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2014, 05:04 |
|
ICommand.CanExecuted - параметр?
|
|||
---|---|---|---|
#18+
неделя_на_wpf, Команда сама должна уведомлять о своем состоянии интерфейсу через событие CanExecuteChanged, ну или предоставлять возможность стороннему объекту вызвать это событие, если этому объекту виднее, когда стоит нажимать на кнопку пользователю, а когда нет После того как событие CanExecuteChanged сработает, все подписчики вызовут CanExecute у команды и обновят UI в зависимости, от того что этот метод вернет. поэтому можно сделать следующее: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2014, 20:20 |
|
ICommand.CanExecuted - параметр?
|
|||
---|---|---|---|
#18+
maratoss, спасибо за помощь, но теперь получил null вообще везде) Код: xml 1. 2. 3. 4. 5.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 13:51 |
|
ICommand.CanExecuted - параметр?
|
|||
---|---|---|---|
#18+
неделя_на_wpf, Оказывается что меню находится за пределами визуального дерева ну и как писал Сон Веры Павловны установи DataContext через PlacementTarget Код: xml 1. 2.
http://www.codeproject.com/Articles/162784/WPF-ContextMenu-Strikes-Again-DataContext-Not-Upda ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 15:52 |
|
ICommand.CanExecuted - параметр?
|
|||
---|---|---|---|
#18+
maratoss, интересно. Хотя обойти это можно используя нормальный MVVM и иметь SelectedItem в модели. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 16:18 |
|
ICommand.CanExecuted - параметр?
|
|||
---|---|---|---|
#18+
maratoss, DataContext в ContextMenu пробовал сразу устанавливать, но проблема вроде бы не в этом, ибо я опять вернулся к тому же самому. Ради интереса попробовал: Код: xml 1. 2. 3. 4. 5.
в итоге в icommand.Execute получаю - parameter=DatabaseFolder (то есть привязка работает), а свойство команды DbFolder = null Пока ковыряюсь с другим, решения так и не придумал ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2014, 16:40 |
|
|
start [/forum/topic.php?fid=21&gotonew=1&tid=1441215]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
107ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 9ms |
total: | 205ms |
0 / 0 |