[WPF] Привязка TextBox и TreeView
От: VetalPPC  
Дата: 27.10.10 16:19
Оценка:
Пытаюсь привязать TextBox с выделенным узлом TreeView. Делаю это так:

<DockPanel>
    <TreeView Name="treeView" Width="200" />
    <TextBox Name="txtBoxText" Text="{Binding ElementName=treeView, Path=SelectedItem.Header, Mode=TwoWay}" />
</DockPanel>


var item = new TreeViewItem() { Header = "item"};
treeView.Items.Add(item);
item.Items.Add(new TreeViewItem() { Header = "subitem" });


Привязка в сторону источника должна работать каждый раз при потере фокуса из TextBox. Но если перейти из TextBox в TreeView нажатием на плюсик, привязка не срабатывает.
Похоже, что это глюк, но как его обойти нигде не нашел. Может кто-то знает способ?
Re: [WPF] Привязка TextBox и TreeView
От: Fortnum  
Дата: 28.10.10 04:16
Оценка:
Здравствуйте, VetalPPC, Вы писали:

VPP>Привязка в сторону источника должна работать каждый раз при потере фокуса из TextBox. Но если перейти из TextBox в TreeView нажатием на плюсик, привязка не срабатывает.


Проверил и в .NET 4 (VS2010) и в .NET 3.5 SP1 (VS2008) — везде срабатывает.
Re[2]: [WPF] Привязка TextBox и TreeView
От: VetalPPC  
Дата: 28.10.10 13:13
Оценка:
Здравствуйте, Fortnum, Вы писали:

VPP>Проверил и в .NET 4 (VS2010) и в .NET 3.5 SP1 (VS2008) — везде срабатывает.


Хм... Странно. Использую Visual C# 2010 Express.

Выделяю подузел. Изменяю текст в TextBox-е. Кликаю, например, на самом узле. Header узла обновляется из тестового поля.

Теперь делаю по другому. Изменяю текст в TextBox-е (при этом выделен подузел) и сразу после этого нажимаю на иконку "минус" чтобы скрыть подузел. Информация о моих изменениях в тексте просто теряется. Header подузла остается старый.
Re[3]: [WPF] Привязка TextBox и TreeView
От: Fortnum  
Дата: 28.10.10 13:19
Оценка:
Здравствуйте, VetalPPC, Вы писали:

VPP>Теперь делаю по другому. Изменяю текст в TextBox-е (при этом выделен подузел) и сразу после этого нажимаю на иконку "минус" чтобы скрыть подузел. Информация о моих изменениях в тексте просто теряется. Header подузла остается старый.


Подтверждаю. Имеет место.
Re[4]: [WPF] Привязка TextBox и TreeView
От: VetalPPC  
Дата: 28.10.10 13:45
Оценка:
Как же быть?
При попытке ловить потерю фокуса самостоятельно при данном действии выделение другого узла происходит раньше, чем LostFocus текстового поля.
Как же сохранить текст в узле? Может я не туда копаю?
Re[5]: [WPF] Привязка TextBox и TreeView
От: Fortnum  
Дата: 28.10.10 13:50
Оценка:
Здравствуйте, VetalPPC, Вы писали:

VPP>Как же быть?

VPP>При попытке ловить потерю фокуса самостоятельно при данном действии выделение другого узла происходит раньше, чем LostFocus текстового поля.
VPP>Как же сохранить текст в узле? Может я не туда копаю?

Копать в сторону MVP, PresentationModel и MVVM. Биндиться к DataContext'ному объекту, а не к виртуальному уничтожаемому экземпляру уровня View.
Re[6]: [WPF] Привязка TextBox и TreeView
От: VetalPPC  
Дата: 28.10.10 18:21
Оценка:
Здравствуйте, Fortnum, Вы писали:

VPP>Биндиться к DataContext'ному объекту, а не к виртуальному уничтожаемому экземпляру уровня View.


Вообще-то у себя так и делаю. Тут выложил до предела упрощенный пример, чтоб удобней читать было, ну и для максимального сужения круга подозрений, так сказать.
А в реальной задаче используется все по правилам: шаблоны данных, DataContext, и т.д. Но описанное мною некорректное поведение остается таким же.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.