Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Есть вопрос к знатокам. Есть юзер контрол: Код: plaintext В XAML в DataTemplate есть привязка такого рода: Код: plaintext Так вот вопрос, я должен менять в юзерконтроле значение, а оно в свою очередь лолжно писаться в CueCount. Но не пишется! А если написать так: Код: plaintext Тут смотрел, но че то не догнал. На пальцах мож кто объяснит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 08:24 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Вот ссылка на аналогичную проблему. Какой DataContext нах там еще... У меня DataTemplate натягивается на элемент коллекции которую в свою очередь привязываю через ItemsSource ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 08:32 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
aleks-sam, покажите XAML разметку этого контрола, и еще того, где он используется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 09:58 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Контрол: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Где используется: Код: plaintext 1. 2. 3. 4. 5. Этот DataTemplate натягивается на элемент списка (ListBox) И списку назначается коллекция (List<xxxx>) через ItemsSource, где xxxx это класс в котором есть поле: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 10:07 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
aleks-sam, в этом UserControl нигде не указывается никаких объектов для DataContext? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 10:13 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Denis Gladkikhaleks-sam, в этом UserControl нигде не указывается никаких объектов для DataContext? Нет. А надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 10:32 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Я просто не понял коллегу (ссылку в первом топике приводил), он там говорил про это. Не знаю куда прикрутить надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 10:35 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
aleks-sam, вот я написал пример того, что вы мне рассказали, у меня все отлично работает, смотрите в output window при запуске с отладчиком. смотрите чем ваш пример отличается. по поводу приведенного кода, вы бы мне еще xaml UserControl могли бы уж просто привести <UserControl ... > ... </UserControl>, что уж лишнее-то писать. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 10:50 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Denis Gladkikhaleks-sam, вот я написал пример того, что вы мне рассказали, у меня все отлично работает, смотрите в output window при запуске с отладчиком. смотрите чем ваш пример отличается. по поводу приведенного кода, вы бы мне еще xaml UserControl могли бы уж просто привести <UserControl ... > ... </UserControl>, что уж лишнее-то писать. ;) Да в теле контрола не важно же что там. Там просто еще 2 кнопки и текстовое поле. Никаких привязок, ничего нет больше. За пример спасибо. Ща посмотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 10:54 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. У меня в проге не вызывается метод SET. Вопрос: Вот ты делаешь так: <Window.DataContext> <WpfApplication2:ViewModel /> </Window.DataContext> И потом привязываешься: <ListBox ItemsSource="{Binding Items}" > У меня список в этом же окне, как мне в DataContext указать текущее окно или объект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 11:26 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
aleks-sam, еще раз, покажите весь код xaml где вы используете этот UserControl, а так же код xaml самого UserControl ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 11:43 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#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. 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. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. По событию загрузки этого контрола вызывается метод: Код: plaintext 1. 2. 3. 4. ********** Сам контрол: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. И его код: Код: 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. ****** tables - переменная типа ObserbableCollection<PlayTable>, где PlayTable: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 11:54 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
aleks-sam, уберите из конструктора CurrentCueCount = 0; все равно в объявлении DependencyProperty это уже проставлено. А вот почему не работает когда в конструкторе стоит CurrentCueCount = 0 я не могу ответить, надо покопать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 12:18 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Denis Gladkikhaleks-sam, уберите из конструктора CurrentCueCount = 0; все равно в объявлении DependencyProperty это уже проставлено. А вот почему не работает когда в конструкторе стоит CurrentCueCount = 0 я не могу ответить, надо покопать. бл?*:!, убрал CurrentCueCount = 0 в конструкторе и биндинг заработал. Что это хначит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 12:27 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
aleks-samбл?*:!, убрал CurrentCueCount = 0 в конструкторе и биндинг заработал. Что это хначит?Значит, что binding заменялся на 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 12:34 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Алексей Кaleks-samбл?*:!, убрал CurrentCueCount = 0 в конструкторе и биндинг заработал. Что это хначит?Значит, что binding заменялся на 0. че??? а в методах btnDown_Click и btnUp_Click чего же не заменяется на 0? Думаю это баг WPF, надо бы создать багрепорт на connect.microsoft.com, если ни у кого желания его создавать нет, то я создам потом как время будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 12:42 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Denis GladkikhАлексей Кпропущено... Значит, что binding заменялся на 0. че??? а в методах btnDown_Click и btnUp_Click чего же не заменяется на 0? Думаю это баг WPF, надо бы создать багрепорт на connect.microsoft.com, если ни у кого желания его создавать нет, то я создам потом как время будет.Binding является одним из типов значений DependencyProperty. Если я правильно понял, произошло что-то вроде: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 12:45 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Я сам в шоке. Может и Алексей и прав. Блин, дела... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 12:58 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Denis Gladkikhче??? а в методах btnDown_Click и btnUp_Click чего же не заменяется на 0?Там нет присваивания этому свойству 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 12:58 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Хотя нет, чё-то я не то ляпнул. Как же тогда TwoWay Binding будет работать. :-) Сори. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 13:12 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Ну что тогда в конструкторе происходит тогда с CurrentCueCount = 0? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 13:20 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Denis GladkikhДумаю это баг WPF ))) читать о том как определяется значение DependencyProperty ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 13:29 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
aleks-samНу что тогда в конструкторе происходит тогда с CurrentCueCount = 0?Ну может правда какая ошибка/особенность, связанная с тем, что свойству с Binding-гом было "не вовремя" :-) присвоено значение. Такой пример вроде нормально работает: Код: 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. Возможно именно в Вашем случае сказалась какая-то особенность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 13:34 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Ну у меня такая вот ситуация :) Буде время проверю времена инициализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 13:39 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
ребята, ну что вы в самом деле, читайте доку - Dependency Property Value Precedence ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 13:55 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
LR, в смысле, ты объясняешь этой статьей в чем проблема, если в конструкторе установить 0 для DependencyProperty текущего UserControl? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 14:01 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Denis Gladkikh, да, оттуда Dynamic resources and bindings have the precedence of where they were set, but the value is deferred. One consequence of this is that if you set a dynamic resource or binding to a local value, any change to the local value replaces the dynamic resource or binding entirely. Even if you call the ClearValue method to clear the locally set value, the dynamic resource or binding will not be restored. In fact, if you call ClearValue on a property that has a dynamic resource or binding in place (with no literal local value), they are cleared by the ClearValue call too. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 14:20 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
кстати, для случая когда необходимо задать текущее значение DP, не нарушая связь с источником, существует метод SetCurrentValue, т.е. в конструкторе примера будет так: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 16:17 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
LR, спасибо, что-то я как-то на это даже и не напарывался и не знал про это. бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 16:33 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Denis Gladkikh, DO/DP для меня ооочень нетривиальная вещь (и по большей части остается "terra incognita"), но одно я уяснил четко - (существенных) багов там быть не может, ибо это один из столпов wpf :) Алексей КТакой пример вроде нормально работает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. если вместо slider1.Value = 0; попытаемся явно дернуть slider1.SetValue(Slider.ValueProperty, 0); то получим ошибку ('0' is not a valid value for property 'Value'.) а вот slider1.ClearValue(Slider.ValueProperty); разрушает байндинг... х.з., очевидно, особенность реализации этих (DP) свойств у контролов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 17:27 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
LRявно дернуть slider1.SetValue(Slider.ValueProperty, 0); то получим ошибку ('0' is not a valid value for property 'Value'.) хе-хе, так проходит slider1.SetValue(Slider.ValueProperty, 0d); но байндинг это не разрушает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 17:47 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
LR, а код спрятан :( не рефлектор не показывает, ни продебажить нельзя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 17:52 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
вполне возможно это вот этот случай: Dependency Property Value Precedence Coercion, Animations, and Base Value Coercion applies at the highest level of all. Even an already running animation is subject to value coercion. Certain existing dependency properties in WPF have built-in coercion. For a custom dependency property, you define the coercion behavior for a custom dependency property by writing a CoerceValueCallback and passing the callback as part of metadata when you create the property. You can also override coercion behavior of existing properties by overriding the metadata on that property in a derived class. Coercion interacts with the base value in such a way that the constraints on coercion are applied as those constraints exist at the time, but the base value is still retained. Therefore, if constraints in coercion are later lifted, the coercion will return the closest value possible to that base value, and potentially the coercion influence on a property will cease as soon as all constraints are lifted. For more information about coercion behavior, see Dependency Property Callbacks and Validation. т.е., DP механизм весьма и весьма нетривиален...:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.01.2011, 18:13 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Да я тоже никогда не обращал внимания, пока вот не эта ситуация. Спасибо за дискуссию и помощь. expirience++; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 04:47 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
LRесли вместо slider1.Value = 0; попытаемся явно дернуть slider1.SetValue(Slider.ValueProperty, 0); то получим ошибку ('0' is not a valid value for property 'Value'.)Потому что свойство имеет тип double, а Вы пытаетесь присвоить int. А при обращении к типизированному сеттеру происходит неявное преобразование типа. LRа вот slider1.ClearValue(Slider.ValueProperty); разрушает байндинг...Всё верно. Именно "это" вызывается внутри BindingOperations.ClearBinding. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 06:39 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
LRLRявно дернуть slider1.SetValue(Slider.ValueProperty, 0); то получим ошибку ('0' is not a valid value for property 'Value'.) хе-хе, так проходит slider1.SetValue(Slider.ValueProperty, 0d); но байндинг это не разрушает... Похожая ситуация: Код: plaintext 1. 2. Выдаст исключение (или нет, не помню, в любом случае привязка развалится). А если так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 13:35 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Руки-крюки, Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 13:36 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Руки-крюки, > Выдаст исключение (или нет, не помню, в любом случае привязка развалится) если можно привести к нужному типу, то ошибки не будет (да и привязка не развалится, с чего?), все согласно msdn (PropertyMetadata Constructor): The type of the value provided for defaultValue must be match or be related to the type specified in the original registration of the dependency property that this metadata will be applied to. для DependencyObject.SetValue тоже все происходит согласно msdn: If the provided type does not match the type that is declared for the dependency property as it was originally registered, an exception is thrown. The value parameter should always be provided as the appropriate type. а вот в обвертке-сеттере свойства вероятно осуществляется попытка приведения типа... Остается неясным вопрос, почему для "самописного" DO присвоение локального значения DP убивает привязку, а для тех же контролов из примера Алексей К этого не происходит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 14:51 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
LR, Видимо double и int не являются be related . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 15:51 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Руки-крюки, да, действительно ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 16:43 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
если (в примере, который выложил Denis Gladkikh) CueControl захостить вне списка (и DataTemplate), например Код: plaintext 1. 2. с другой стороны, если отнаследоваться от какого-нить библиотечного контрола, напр. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. так что, Denis Gladkikh, это Denis GladkikhДумаю это баг WPF вполне может иметь место :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 19:34 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
о, наконец-то :-) нагуглил обсуждение этой проблемы с очень правдоподобным объяснением: hbarckI would guess that if you initialize the property with a local value before the template-generated binding is in place, this value takes precedence over values set through a binding in a DataTemplate, as stated in the document I linked above. If you create a binding in XAML directly, this has the same precedence as the local value, so it overwrites it. If you initialize the value after the binding has been created by the DataTemplate, setting the property is already propagated through the binding, so you don't notice the difference... что не противоречит документации (Dependency Property Value Precedence), так что это таки не баг WPF, пфрруу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2011, 20:45 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
Как глубока истина все же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2011, 12:11 |
|
||
|
Binding UserControl не работает
|
|||
|---|---|---|---|
|
#18+
У меня почему-то вот так рушится привязка. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2011, 17:29 |
|
||
|
|

start [/forum/topic.php?all=1&fid=21&tid=1442499]: |
0ms |
get settings: |
4ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
26ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 9ms |
| total: | 95ms |

| 0 / 0 |
