Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / TreeView изменение фокуса / 25 сообщений из 30, страница 1 из 2
25.11.2010, 13:23
    #36976710
Юлия86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
Здравствуйте, подскажите, пожалуйста, как в TreeView установить фокус на элемент с определенным значением

int i = TreeView1.Items.IndexOf(Id);
AnalysisTree.Items.MoveCurrentToPosition(i);

При выполнении этого кода изменений на форме не происходит
...
Рейтинг: 0 / 0
25.11.2010, 13:24
    #36976712
Юлия86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
Опечатка в пердыдущем сообщении

int i = TreeView1.Items.IndexOf(Id);
TreeView1.Items.MoveCurrentToPosition(i);
...
Рейтинг: 0 / 0
25.11.2010, 16:04
    #36977236
Юлия86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
люди, отзовитесь! :(
...
Рейтинг: 0 / 0
25.11.2010, 16:29
    #36977322
Юлия86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
((TreeViewItem)TreeView1.Items[i]).IsSelected = true; ругается

TreeView1.Items[i] возвращает не узел, а его содержимое
В чем ошибка?
...
Рейтинг: 0 / 0
25.11.2010, 16:30
    #36977326
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
насколько я помню, надо у конкретного TreeViewItem установить IsSelected = true
...
Рейтинг: 0 / 0
25.11.2010, 16:34
    #36977343
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
из содержимого (Item) надо получить контейнер (TreeViewItem) с помощью генератора http://msdn.microsoft.com/en-us/library/system.windows.controls.itemcontainergenerator.containerfromitem.aspx
...
Рейтинг: 0 / 0
25.11.2010, 16:36
    #36977348
Юлия86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
как получить контейнер? приведите, пожалуйста, пример
...
Рейтинг: 0 / 0
25.11.2010, 16:37
    #36977350
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
или забиндить TreeViewItem.IsSelected на Item.IsSelected, как предлагают отцы основатели mvvm
...
Рейтинг: 0 / 0
25.11.2010, 16:38
    #36977354
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
Юлия86как получить контейнер? приведите, пожалуйста, пример
var Generator = TreeView.ItemContainerGenerator;
var TreeViewItem = Generator.ContainerFromItem(TreeView.Items[i]);
TreeViewItem.IsSelected = true;

как-то так
...
Рейтинг: 0 / 0
25.11.2010, 16:45
    #36977382
Юлия86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
Вестник,

TreeView.ItemContainerGenerator;

В TreeView нет свойства ItemContainerGenerator :(
...
Рейтинг: 0 / 0
25.11.2010, 16:47
    #36977394
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
да вы что? он разве не из ItemsControl выведен? (не могу сейчас посмотреть, писал по памяти)
...
Рейтинг: 0 / 0
25.11.2010, 16:50
    #36977406
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
сейчас проверил: в SL4 точно есть
...
Рейтинг: 0 / 0
25.11.2010, 16:51
    #36977409
Юлия86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
TreeViewItem obj = TreeView1.ItemContainerGenerator.ContainerFromItem(TreeView1.Items[i]) as TreeViewItem;
obj.IsSelected = true;

не работает :( ничего не происходит
...
Рейтинг: 0 / 0
25.11.2010, 16:52
    #36977415
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
IsExpanded = true добавьте
...
Рейтинг: 0 / 0
25.11.2010, 16:59
    #36977435
Юлия86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
IsExpanded = true разворачивает узел, не фокусирует этот элемент на форме, для того, чтобы его увидеть, приходится прокручивать скрол.

может надо как-то форму активной сделать?
...
Рейтинг: 0 / 0
25.11.2010, 17:01
    #36977446
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
Юля, больше я вам ничем помочь не смогу. я помню, что у меня прекрасно работало IsSelected, причем оно само прокручивало и разворачивало без дополнительных усилий. правда, я биндил на ViewModel.IsSelected
...
Рейтинг: 0 / 0
25.11.2010, 17:04
    #36977454
Юлия86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
Все равно, спасибо Вам большое!!! Очень помогли :)
...
Рейтинг: 0 / 0
25.11.2010, 17:07
    #36977468
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
соврал, биндю оба, сначала IsExpanded, потом IsSelected
...
Рейтинг: 0 / 0
25.11.2010, 17:19
    #36977505
Юлия86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
Вестник, извините пожалуйста за нескоромный вопрос, а что такое биндить?
...
Рейтинг: 0 / 0
25.11.2010, 17:22
    #36977519
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
Юлия86Вестник, извините пожалуйста за нескоромный вопрос, а что такое биндить?
от слова binding (т.е. устанавливать привязку).
...
Рейтинг: 0 / 0
25.11.2010, 17:26
    #36977535
Юлия86
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
Compositum, понятно :),
а вот как забиндить TreeViewItem.IsSelected на Item.IsSelected непонятно,
не подскажите?
...
Рейтинг: 0 / 0
25.11.2010, 17:33
    #36977563
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
Юлия86Compositum, понятно :),
а вот как забиндить TreeViewItem.IsSelected на Item.IsSelected непонятно,
не подскажите?
Код: plaintext
<TreeViewItem IsSelected="{Binding ElementName = ИмяЭлемента, Path = Item.IsSelected}"/>
как-то так (навскидку).
...
Рейтинг: 0 / 0
25.11.2010, 17:38
    #36977578
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
для mvvm это не так просто. я делал так:

Код: 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.
public class TreeViewItemEx : TreeViewItem
    {
        internal static TreeViewItemEx CreateBindings()
        {
            TreeViewItemEx tvi = new TreeViewItemEx();

            Binding expandedBinding = new Binding("IsExpanded");
            expandedBinding.Mode = BindingMode.TwoWay;
            tvi.SetBinding(TreeViewItemEx.IsExpandedProperty, expandedBinding);

            Binding selectedBinding = new Binding("IsSelected");
            selectedBinding.Mode = BindingMode.TwoWay;
            tvi.SetBinding(TreeViewItemEx.IsSelectedProperty, selectedBinding);

            return tvi;
        }

        protected override DependencyObject GetContainerForItemOverride()
        {
            return CreateBindings();
        }
    }

    public class TreeViewEx : TreeView
    {
        protected override DependencyObject GetContainerForItemOverride()
        {
            return TreeViewItemEx.CreateBindings();
        }
    }
...
Рейтинг: 0 / 0
25.11.2010, 17:40
    #36977585
Compositum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
привязку лучше прописывать в xaml - чем меньше кода, тем лучше (имхо).
...
Рейтинг: 0 / 0
25.11.2010, 17:41
    #36977592
Вестник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TreeView изменение фокуса
в xaml вы не можете прописать использование TreeViewItem, если мне не изменяет память
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / TreeView изменение фокуса / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]