Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Есть следующий код: Код: plaintext 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. 34. 35. 36. Тут - DataContext="{Binding Path=Local}" привязка идет нормально, проверял. А вот в шаблон дата контекст не доходит и привязка тут - Text="{Binding Path=SubmittedCount}" не работает. Что я упустил или неправильно понимаю? Local и Overall вьюмодельки с полями SubmittedCount, PassedCount и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 17:01 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Руки-крюки, Точнее не полями а свойствами. INotifyPropertyChanged реализован нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 17:03 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Руки-крюки, Не очень хорошо так делать. Не знаю, есть ли где-то рекомендации по этому поводу. Но конструкция DataContext="{Binding Path=Overall}" ужасна. Так как source не указан, то путь берется из DataContext, при втором байдинге откуда брать этот путь? Опять из DataContext? Но туда уже забиндили другой элемент. Думаю что тут может быть просто такая ошибка. Может быть можно попробовать поставить Mode=OneTime, и может быть будет работать, не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 19:21 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Denis Gladkikh, Что значит при втором байндинге? Второго не будет, если конечно я не стану вызывать OnPropertyChanged для Local или Overall. Это же ViewModel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 19:42 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Руки-крюки, меняется объект DataContext, что провоцирует на проставление значений из байдинга заново. посмотрите в output есть ли там сообщения об ошибках в байдингах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 19:47 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Denis Gladkikh, Нет, сообщений об ошибках нету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 20:22 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Руки-крюки, Вообще говоря, это тоже самое что у листбокса в ItemSource через Path привязать коллекцию ViewModel'ей. Так это делается везде и у всех. Ничего плохо в этом не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 20:40 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Руки-крюки, это совершенно не тоже самое. Еще раз, давайте просто логически просмотрим события. Форма создается. Начинает выставляется значения из байдинга. DataContext="{Binding Path=Local}" - в этом случае мы берем объект из DataContext (!!!!), потом по пути объект.Local выставляем значение в DataContext (!!!!). Так же не стоит забывать, что при связывании у нас так же идет подписка на изменение данных соответственно самого DependencyProperty DataContext, а так же и свойства Local объекта из DataContext, который был изначально. Так как в этом байдинге DataContext поменялся, то не удивлюсь, если он вызвал повторную установку байдинга повторно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2010, 20:54 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Denis Gladkikh, ИМХО, it depends (by design), если привязка дочерних узлов visual-tree идет после привязки родительских - то влиять не должно, у обоих GroupBox-ов DataContext будет вычисляться правильно... (если наоборот - тогда вы правы, будет "повторение повторений"). З.Ы. лазить рефлектором по фреймворку счаз нет ни времени, ни желания... (могу поверить вам на слово, если вы знаете на зубок взаимодействие событий разворачивания visual-tree и data-binding). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2010, 00:52 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Denis Gladkikh... DataContext="{Binding Path=Local}" - в этом случае мы берем объект из DataContext (!!!!) , потом по пути объект.Local выставляем значение в DataContext (!!!! ). ... Для уточнения (по прядку подчеркивания): 1. это DataContext всей формы (VisualRoot-а, что ли?), он выставляется, наверное, в чем-то типа ViewModelBase; 2. это DataContext конкретного GroupBox-а, если на момент его установки DataContext VisualRoot-а уже существует и установлен, то - ничего страшного не произойдет... (ИМХО). З.Ы. вполне возможно, что достаточно будет найти такое событие в ViewModelBase, чтобы устанавливать его DataContext до установки DataContext-ов дочерних элементов visual-tree... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2010, 00:59 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Denis Gladkikh, Хотя, по здравому размышлению, более склонен согласиться с вами - для такого биндинга GroupBox-ам подойдет лучше синтаксис через RelativeSource, чем "прямой"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2010, 01:06 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
qu-qu, да не, это чисто предположение, хотя я думаю у них что-то есть для предотвращения этого, так что может я и не прав, нужно просто провести эксперимент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2010, 08:48 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
В общем я убрал шаблон и перенес код из шаблона в юзер контрол. Ну и соответственно в Content груп боксов поместил этот юзер контрол. Теперь все работает нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2010, 12:07 |
|
||
|
ContentTemplate у CheckBox, не работает привязка.
|
|||
|---|---|---|---|
|
#18+
Руки-крюкиВ общем я убрал шаблон и перенес код из шаблона в юзер контрол. Ну и соответственно в Content груп боксов поместил этот юзер контрол. Теперь все работает нормально. Немного не "докрутили" разметку... (надо было "в Content груп боксов" просто привязать данные из модели). Видимо, согласно "политике партии": DataTemplate работает со свойством Content, а ControlTemplate со свойством DataContext, вот примерчик, на основе вашего кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Код: plaintext 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. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 1. ваш шаблон и мои binding-и в нем, так, чтобы все работало как ожидалось (binding-и - "мозговыедальные", ИМХО); 2. тупой прямой binding для проверки, что DataContext у рута устанавливается правильно; 3. binding в DataTemplate по типу данных (видно, что binding на Content работает, а на DataContext нет); 4. binding в ControlTemplate по ключу (видно, что binding на DataContext работает, а на Content нет); 5. binding в DataTemplate по ключу (чтобы не было сомнений, что ваш случай требовал только замены binding-а на Content вместо DataContext). З.Ы. Denis Gladkikh, почитал я про binding на DataContext - в общем случае не возбраняется (что подтверждается текущим примером), но настоятельно рекомендуется избегать, т.к. есть возможность "отстрелить себе ногу" путем циклических ссылок на один и тот же DataContext... (в контексте данного примера этого нет, т.к. все иерархически тупо и просто - контейнер -> свойство, никаких авто-ссылок). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2010, 15:26 |
|
||
|
|

start [/forum/topic.php?fid=21&msg=37028131&tid=1442514]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 9ms |
| total: | 139ms |

| 0 / 0 |
