![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| Тигер |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 4.4.2010 Репутация: нет Всего: нет |
Вобщем, смысл в том что я хочу сделать корневые Items в TreeView редактируемымми.
Для этого планирую заменять их на TextBox XAML
в C#:
Проблема в том что событие DoubleClick вешается на все Items и не только на корневые. И так же возникают сомнения в оптимальности подхода к решению задачи. Попутно вопрос: Почему вот этот код работает некорректно и отображает Ноль
Спасибо! Это сообщение отредактировал(а) Тигер - 21.7.2013, 10:10 |
||||||
|
|||||||
| dzaraev |
|
||||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 12.1.2013 Репутация: нет Всего: 1 |
Сразу хочу заметить - что у вас ошибка в infobox_item_edit: вы не проверяете infoBox_treeview.SelectedItem на null. Поэтому, если дважды кликнуть не по хедеру, а по стрелочке слева, и у дерева не будет выбранного элемента, вы получите NullReferenceException.
Во-первых, сам стиль общий - т.е. задан для всех элементов дерева. Во-вторых, когда выкликаете по дочернему элементу, в качестве инициатора события выступает корневой родительский элемент, потому что он размещает в себе дочерние, и по факту - вы кликаете по нему. Поскольку sender - всегда корневой элемент, то самое простое решение вашей задачи, это проверять на тождественность отправителя и выделенный элемент:
Далее,
Оптимальность конечно не очень. Более удачный подход - использовать DataTemplate для хедера. И устанавливать его на свойство TreeViewItem.HeaderTemplate по нужной логике (либо сразу - статически). Вот пример такого подхода: http://dedjo.blogspot.ru/2007/05/create-ed...item-using.html не совсем ваша задача, но думаю вы разберётесь. Если всё же возникнут вопросы - спрашивайте. Очень перегруженная операция, поэтому вы сами запутались в ней. Давайте просто напишем тоже самое, но не жалея строчек кода:
Теперь стало очевидно, что вы просто пихаете в корневые элементы дерева значение, которое возвращает метод Add, а он возвращает вот такой int:
Соответственно, при добавлении одного единственного под-элемента, Add добавил его по индексу 0. И этот ноль вы и засунули в дерево в качестве корневого элемента. Ну и теперь правильный вариант:
Это сообщение отредактировал(а) dzaraev - 22.7.2013, 09:28 --------------------
Если вопрос решён - помечайте тему. |
||||||||||||
|
|||||||||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |