2009-12-22 3 views
0

У меня есть TabControl, где содержимое каждого TabItem является представлением мастер-данных.WPF Поддерживает выбор ListBox при изменении вкладок

Для мастера я использую список, чей номер ItemsSource связан с коллекцией в моей модели ViewModel. Выбор элемента из списка отображает детали конкретного элемента в сетке в сторону.

Когда я переключаюсь на другую вкладку, а затем обратно на вкладку оригинала, выбор списка выглядит потерянным.

Что можно сделать для сохранения выбора списка на каждой вкладке при изменении выбора вкладки?

Для нормального использования конечным пользователям необходимо «настроить» подробные представления так, как им нравится в конкретной ситуации, а затем периодически перебирать вкладки для проверки каждой системы (каждая вкладка предоставляет детали для машин на другая производственная линия).

TabControl выглядит следующим образом:

<TabControl 
    ItemsSource="{Binding DiagCards}" 
    ContentTemplate="{StaticResource DiagCardViewTemplate}" 
    SelectedItem="{Binding SelectedDiagCard}" /> 

The View для каждого TabItem есть ListBox, который выглядит следующим образом:

<ListBox 
    ItemsSource="{Binding DiagCard.DevicesDetected}" 
    SelectedItem="{Binding SelectedDevice}"/> 

Подробности отображаются в TabItem с использованием ContentControl:

<ContentControl 
    Content="{Binding SelectedDevice}" 
    ContentTemplateSelector="{StaticResource SelectedDeviceTemplateSelector}"/> 

Следует отметить, что простой тест с использованием жестко закодированных TabItems и ListBoxes делает, кажется, поддерживают выбор, когда ушко изменения:

<TabControl> 
     <TabItem Header="tab 1"> 
      <ListBox> 
       <ListBoxItem> 
        <TextBlock Text="item 1-1"/> 
       </ListBoxItem> 
       <ListBoxItem> 
        <TextBlock Text="item 1-2"/> 
       </ListBoxItem> 
      </ListBox> 
     </TabItem> 
     <TabItem Header="tab 2"> 
      <ListBox> 
       <ListBoxItem> 
        <TextBlock Text="item 2-1"/> 
       </ListBoxItem> 
       <ListBoxItem> 
        <TextBlock Text="item 2-2"/> 
       </ListBoxItem> 
      </ListBox> 
     </TabItem> 
    </TabControl> 

Update: Я поставил IsSynchronizedWithCurrentItem="True" на ListBox и все, кажется, хорошо.

+0

Когда вы говорите, что выбор списка выглядит потерянным, вы имеете в виду, что «деталь» (элемент управления содержимым) не отражает правильный выбор списка или означает, что панель выбора списка просто не видна? – devuxer

+0

Предположим, что я выбираю третий элемент в списке, а затем переключаюсь на другую вкладку. Когда я вернусь к первой вкладке, в списке ничего не будет выбрано. Я хочу, чтобы 3-й элемент оставался выбранным. – user158485

ответ

2

Основываясь на вашем комментарии, я бы предположил, что что-то меняется в вашей модели просмотра, чтобы удалить выбранный элемент. Можете ли вы установить точку останова на установщике SelectedDevice и проверить стек вызовов?

Чтобы проверить, что вы можете удалить код SelectedItem = {} и посмотреть, будет ли он выбран при изменении вкладок?

Чтобы ответить более подробно, мне нужно будет увидеть больше кода.