Связывание SelecteItem в TabControl - PullRequest
       29

Связывание SelecteItem в TabControl

0 голосов
/ 13 октября 2011

Это проект MVVM. У меня есть ListBox с TabControls внутри его элементов. TabItems различны для каждого TabControl и связаны из ViewModel:

                <TabControl ItemsSource="{Binding Tabs}"
                </TabControl >  

Вкладки:

    public ObservableCollection<TabItem> Tabs
    {   get { return tabs;  }
        set {
            tabs = value;
            value.CollectionChanged += delegate
            {
                OnPropertyChanged("Tabs");
            };

            OnPropertyChanged("Tabs"); } }

Вкладки заполняются следующим образом только один раз:

                Tabs = new ObservableCollection<TabItem>();

                if (details.Image != null || !String.IsNullOrEmpty(details.Summary))
                    Tabs.Add(new TabItem() { Header = "General Info", Content = new GeneralInfo() { DataContext = ItemDetails } });  ........... 6 different types

Это немного информации о том, что у меня есть. Затем я динамически изменяю DataContext этого TabControls для имитации прокрутки.

Вся информация из ViewModel привязана к элементу управления, но есть проблема с TabControl. Заголовки связаны. но содержание не делает. Все заголовки отменены, а область содержимого TabCntrol пуста.

Я пытался сделать TwoWayBinding для SelectedIndex и SelectedItem, но это не помогает .... Кажется, SelectedIndex не делает ничего, что может выбрать TabItem. И SelectedItem не работает, потому что я думаю, что он имеет новую ссылку после каждого изменения контекста данных. Потому что TabControl.ItemsSource повторно связывается и создаются новые TabItems

Может быть, кто-то решил ту же проблему и знает решение?

Спасибо

1 Ответ

0 голосов
/ 14 октября 2011

Я решил мою проблему. Проблема заключалась в том, что я использовал элементы управления в качестве DataContext: - Список TabItems - контролирует содержимое TabItems Были некоторые процессы, которые я не понимаю полностью. Но идея заключается в том, что при изменении DataContext один DataContext может быть назначен двум различным элементам TabControl. Поскольку элементы управления пользовательского интерфейса не могут принадлежать 2 родителям одновременно, поэтому привязка, которая должна показывать, что элементы управления из DataContext в содержимом не работает. И не бросает исключение (потому что это обязательный Smile | :))

Итак, я удаляю все объекты пользовательского интерфейса из DataContext и добавляю объектные модели. И создайте UserControls, которые отображают представления для этих объектных моделей

...