|
event добавления Child
|
|||
---|---|---|---|
#18+
Доброго времени суток. Может кто поделиться ответом на вопрос - как реализовать функционал нотификации при добавлении дочерних элементов? Допустим есть Grid, в нем переопределен метод OnVisualChildrenChanged, а как узнать что к потомку Grid добавился еще один потомок? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2015, 15:26 |
|
event добавления Child
|
|||
---|---|---|---|
#18+
AderAder, думаю самый правильный способ будет использовать RoutedEvent типа Bubble. Из уже существующих, можно слушать Loaded, оно сработает когда будет элемент будет создан или какие то другие или даже своё. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2015, 17:18 |
|
event добавления Child
|
|||
---|---|---|---|
#18+
Roman Mejtes, Метод Loaded я же могу слушать только у непосредственного потомка. Допустим есть два кастомных UserControl, если я непосредственно при инициализации загружу в первый, допустим грид, то я смогу подписаться на его Loaded, а вот как быть если я уже в процессе выполнения именно в Грид добавлю второй UserControl, то собственно нужно как то научить Грид выдавать сообщения о изменении колекции чаилдов, а вот с этим проблема( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 07:31 |
|
event добавления Child
|
|||
---|---|---|---|
#18+
AderAderRoman Mejtes, Метод Loaded я же могу слушать только у непосредственного потомка. Допустим есть два кастомных UserControl, если я непосредственно при инициализации загружу в первый, допустим грид, то я смогу подписаться на его Loaded, а вот как быть если я уже в процессе выполнения именно в Грид добавлю второй UserControl, то собственно нужно как то научить Грид выдавать сообщения о изменении колекции чаилдов, а вот с этим проблема(Вы хотя бы перед тем как ответить почитайте про то. что такое маршрутизируемые события в WPF. Как только в Grid будет добавлен UserControl в Grid'е "всплывет" событие Control.Loaded, которое вы сможете с лёгкостью обработать, если подписаны на обработку этого маршрутизирумого события. Источник события можно получить получить из e.Source или e.OriginalSource, в зависимости от уровня детализации ваших UserControl'ов. Что обрабатывать Routed Events не нужно непосредственно подписываться на событие какого то экземпляра класса, достаточно выбрать правильный "уровень" визуального дерева, где вы ожидаете всплытие этого события. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 07:37 |
|
event добавления Child
|
|||
---|---|---|---|
#18+
Roman MejtesAderAder, думаю самый правильный способ будет использовать RoutedEvent типа Bubble.Или AttachepProperty + FrameworkPropertyMetadataOptions.Inherits . ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 08:01 |
|
event добавления Child
|
|||
---|---|---|---|
#18+
Roman Mejtes, Спасибо, до меня дошло) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 08:39 |
|
event добавления Child
|
|||
---|---|---|---|
#18+
Roman Mejtes, Или не дошло) Можете небольшой пример показать для наглядности? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 09:23 |
|
event добавления Child
|
|||
---|---|---|---|
#18+
Я вам слегка наврал, событие Loaded не Bubble, а Direct, по этому оно не всплывает. По этому, можно создать своё событие Bubble, и запилить как вам будет угодно. Вот пример: Окно: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Код: 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. 33.
UserControl'ы: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 11:34 |
|
|
start [/forum/topic.php?fid=21&gotonew=1&tid=1440784]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
159ms |
get topic data: |
13ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 245ms |
total: | 515ms |
0 / 0 |