Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Передача в качестве параметра команды указателя на текущее окно и еще пары вещей
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток Реальная задача, по которой нужно конкретное решение, легко распространяемое на сходные задачи. Есть набор однотипных устройств, подключенных через СОМ-порты, ими нужно управлять. Пишем программу, на главном окне которой имеется набор контролов, задающих общие настройки для всех СОМ-портов и есть шаблонизированный ListBox, каждый элемент которого - отдельное устройство, подключенное через СОМ-порт. DataContext окна - класс, свойства которого - общие настройки и отдельное свойство - ObservableCollection с элементами - экземплярами класса-контроллера устройства. Класс контроллера реализует команду - "ВКЛ/ВЫКЛ устройство", соответственно, каждый ListBoxItem у вышеупомянутого ListBox'a имеет кнопку, выполняющую эту команду. Проблема в том, что перед выполнением команды на включение устройства неплохо бы проверить, все ли параметры введены верно, т.е. нет ли ошибок валидации. Причем важно сделать эту проверку на стороне модели, а не в behind-коде представления (окна). Модель данных построена примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Шаблон ListBoxItem, соответствующего одному устройству, выглядит вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Логика такова, что перед выполнением команды (например в ICommand.CanExecute) нужно проверить, нет ли ошибок валидации у контролов окна (но не всех) и ошибок валидации у контролов данного ListBoxItem (адреса устройства и его СОМ-порта). Это можно успешно сделать, если в качестве параметра команды передать массив с контролами (как общими, так и данного ListBoxItem'a, но не других устройств-ListBoxItem'ов). И, наконец, вопрос: как в XAML передать (например, через Binding) не свойство какого-либо контрола, а ссылку на него самого? И как в XAML передать ссылку на данный ListBoxItem? Например, вот этот вариант успешно передает в CommandParameter значение свойства IsSelected того ListBoxItem'a, к дереву потомков которого относится кнопка (см. шаблон выше), а как передать сам этот ListBoxItem? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2010, 01:21 |
|
||
|
|

start [/forum/topic.php?fid=21&gotonew=1&tid=1442712]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
28ms |
get topic data: |
7ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 344ms |

| 0 / 0 |
