|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
Доброго времени суток, гуру WPF! Вводная: есть такой вот Код: plaintext
Код: xml 1. 2. 3. 4. 5.
вот такой Код: plaintext
Код: xml 1.
и вот такой Код: plaintext
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
В общем-то все в TextBlock отображается так, как надо, но только на момент загрузки. В дальнейшем, если изменить что-нибудь в узлах txt, приведенного выше xml, то изменения никак не отображаются в TextBlock. Подскажите, в каком направлении копать, дабы решить сию проблему? Заранее спасибо. ...and the Hades came close behind him... (Revelations 6:8) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 15:51 |
|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
Это делали после изменений UpdateLayout(); ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 17:47 |
|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
да пробовал. не помогает. расположение и размеры текстблока не меняются же ) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2012, 09:46 |
|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
ornitopter, Я конечно все понимаю - но может быть проблема в банальном Mode=TwoWay? Я просто в привязке не увидел этот параметр (хотя по идее долже по умолчанию идти). Поставь его в Binding и отпишись по изменениям ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2012, 11:07 |
|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
ornitopter, Мало того - ты должен помнить про параметр TriggerUpdateSource (вроде бы так называется). Короче смысл в том, что по умолчанию при изменениях в TextBox изменения в другие контролы передадутся, если ты уберешь фокус с текстбокса (в котором делал изменения) - то толко после этого изенения появятся. Как вариант - измени этот параметр на PropertyChanged. А вообще, надо бы конечно читать про Bindning прежде чем тут писать. Тут по возможности помогают как правило тогда - когда ты сделал все согласно мануалу а у тебя косяк какой-то. А когда из поста видно, что чел откровенно поленился почитать про Binding и начинает спрашивать сколько будет 2 + 2 ни у кого не будет желания помогать. А вот если будет вопрос - почему я складываю 2 + 2 а у меня получается 5 - вот в этом случае тут с удовольствием помогут ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2012, 11:11 |
|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
unknownfromrusА когда из поста видно, что чел откровенно поленился почитать про Binding и начинает спрашивать сколько будет 2 + 2 ни у кого не будет желания помогать. ТС, конечно же, ленив и про биндинг не читал. И это зло. А вся суть зла состоит в том, что речь идет не о TextBox, а о TextBlock, в котором мне Mode = TwoWay для биндинга совсем не нужен. Но это все лирика. Кроме того, редактирование узлов txt происходит в гриде: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2012, 12:34 |
|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
ornitopter, Чтобы биндинг мог "подхватить" изменение со стороны целевого свойства объекта данных, нужно чтобы объект данных реализовал INotifyPropertyChanged и поднимал событие PropertyChanged с аргументом в виде строки с названием целевого свойства объекта данных при изменении этого свойства. Короче говоря, вам нужно реализовать INotifyPropertyChanged. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2012, 12:37 |
|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
ornitopter, Ты наверно не услшыл того, что я написал. Суть такова - что в источнике измененных данных (тексбокс или ячейка грида - по сути тот же текстбокс) ты изменяешь контент (текст), то изменения передадуться тогда, когда с вводимого поля ты уберешь фокус. Но ты можешь это побороть - изменив параметр TriggerUpdateSource - это свойство биндинга. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2012, 12:40 |
|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
unknownfromrusСуть такова - что в источнике измененных данных (тексбокс или ячейка грида - по сути тот же текстбокс) ты изменяешь контент (текст), то изменения передадуться тогда, когда с вводимого поля ты уберешь фокус. Это я и сам знаю. Все прекрасно работает, если через текстбокс менять какой-нибудь атрибут в xml (например, font, то шрифт в текстблоке изменится сразу, как только фокус уйдет из текстбокса), а вот если работать с InnerXml, OuterXml, InnerText, то ничего не обновляется, хоть умри. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2012, 21:11 |
|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
ornitopter, Не понимаю тебя. То есть атрибуты XML изменяются так? А внутренние узлы (если их изменять) - не изменяются так? Давай код - не охота руками что-то с нуля под твой пример набирать. Я гляну че и как. А то с твоих слов какая то ерунда получается ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2012, 21:47 |
|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
unknownfromrusНе понимаю тебя. То есть атрибуты XML изменяются так? А внутренние узлы (если их изменять) - не изменяются так? Как раз правильно понимаешь. :) Именно так все и происходит. Код подготовлю, выложу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2012, 13:56 |
|
wpf binding innerxml
|
|||
---|---|---|---|
#18+
ornitopter, Ок, выкладывай - я гляну. По крайней мере меня зацепила твоя проблема)) Эта проблема из разряда - че за хрень))) Такие вещи интересно решать)) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2012, 14:15 |
|
|
start [/forum/topic.php?fid=21&fpage=37&tid=1441684]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 318ms |
total: | 449ms |
0 / 0 |