var item = new TreeViewItem() { Header = "item"};
treeView.Items.Add(item);
item.Items.Add(new TreeViewItem() { Header = "subitem" });
Привязка в сторону источника должна работать каждый раз при потере фокуса из TextBox. Но если перейти из TextBox в TreeView нажатием на плюсик, привязка не срабатывает.
Похоже, что это глюк, но как его обойти нигде не нашел. Может кто-то знает способ?
Здравствуйте, VetalPPC, Вы писали:
VPP>Привязка в сторону источника должна работать каждый раз при потере фокуса из TextBox. Но если перейти из TextBox в TreeView нажатием на плюсик, привязка не срабатывает.
Проверил и в .NET 4 (VS2010) и в .NET 3.5 SP1 (VS2008) — везде срабатывает.
Здравствуйте, Fortnum, Вы писали:
VPP>Проверил и в .NET 4 (VS2010) и в .NET 3.5 SP1 (VS2008) — везде срабатывает.
Хм... Странно. Использую Visual C# 2010 Express.
Выделяю подузел. Изменяю текст в TextBox-е. Кликаю, например, на самом узле. Header узла обновляется из тестового поля.
Теперь делаю по другому. Изменяю текст в TextBox-е (при этом выделен подузел) и сразу после этого нажимаю на иконку "минус" чтобы скрыть подузел. Информация о моих изменениях в тексте просто теряется. Header подузла остается старый.
Здравствуйте, VetalPPC, Вы писали:
VPP>Теперь делаю по другому. Изменяю текст в TextBox-е (при этом выделен подузел) и сразу после этого нажимаю на иконку "минус" чтобы скрыть подузел. Информация о моих изменениях в тексте просто теряется. Header подузла остается старый.
Как же быть?
При попытке ловить потерю фокуса самостоятельно при данном действии выделение другого узла происходит раньше, чем LostFocus текстового поля.
Как же сохранить текст в узле? Может я не туда копаю?
Здравствуйте, VetalPPC, Вы писали:
VPP>Как же быть? VPP>При попытке ловить потерю фокуса самостоятельно при данном действии выделение другого узла происходит раньше, чем LostFocus текстового поля. VPP>Как же сохранить текст в узле? Может я не туда копаю?
Копать в сторону MVP, PresentationModel и MVVM. Биндиться к DataContext'ному объекту, а не к виртуальному уничтожаемому экземпляру уровня View.
Здравствуйте, Fortnum, Вы писали:
VPP>Биндиться к DataContext'ному объекту, а не к виртуальному уничтожаемому экземпляру уровня View.
Вообще-то у себя так и делаю. Тут выложил до предела упрощенный пример, чтоб удобней читать было, ну и для максимального сужения круга подозрений, так сказать.
А в реальной задаче используется все по правилам: шаблоны данных, DataContext, и т.д. Но описанное мною некорректное поведение остается таким же.