WPF поддерживает выбор ListBox при изменении вкладки - PullRequest
0 голосов
/ 22 декабря 2009

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

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

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

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

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

TabControl выглядит так:

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

Представление для каждого 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>

Обновление : я установил IsSynchronizedWithCurrentItem="True" в списке, и все вроде бы хорошо.

1 Ответ

2 голосов
/ 23 декабря 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...