WPF 4.0 TabControl с источником данных DataGrid неожиданно меняется - PullRequest
2 голосов
/ 14 сентября 2010

У меня есть TabControl, где каждая вкладка содержит DataGrid. Когда пользователь переключается между вкладками, создается впечатление, что DataGrid создается с нуля. Я говорю это из-за трех вещей, которые я заметил: столбцы восстанавливаются автоматически, текущий отсортированный столбец теряется и выбор теряется.

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

ViewModel:

public ObservableCollection<DataTable> Tables
{
    get
    {
        return _tables; // Tables are added/removed through secondary methods
    }
}

Вид:

<TabControl ItemsSource="{Binding Path=Tables"}>
    <TabControl.ItemTemplate>
        <DataTemplate>
            <TextBlock>
                <TextBlock.Text>
                    <MultBinding StringFormat="{}{0} ({1})}>
                        <Binding Path="TableName"/>
                        <Binding Path="Rows.Count"/>
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </DataTemplate>
    </TabControl.ItemTemplate>
    <TabControl.ContentTemplate>
        <DataTemplate>
            <DataGrid
                AutoGeneratingColumns="True"
                IsReadOnly="True"
                ItemsSource="{Binding DefaultView}"
                />
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

Есть ли способ сохранить текущий порядок сортировки сетки данных при смене вкладок?

1 Ответ

1 голос
/ 14 сентября 2010

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

...