【问题标题】:WPF 4.0 TabControl with DataGrid view source unexpectantly changing带有 DataGrid 视图源的 WPF 4.0 TabControl 意外更改
【发布时间】:2010-09-13 21:58:59
【问题描述】:

我有一个TabControl,其中每个选项卡都包含一个DataGrid。当用户在选项卡之间切换时,DataGrid 似乎是从头开始创建的。我之所以这么说是因为我注意到了三件事:自动重新创建列、丢失当前排序的列以及丢失选择。

当用户返回标签页时,我希望能够保留当前的排序视图。他们可能正在比较列表,并且每次都让他们使用是没有意义的。幕后的数据一旦创建就不会改变。但是,这些选项卡绑定到一个可观察的集合,因为它们需要根据应用程序的使用方式来添加/删除。

视图模型:

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>

当标签被改变时,有没有办法保持数据网格的当前排序顺序?

【问题讨论】:

    标签: wpf datagrid c#-4.0 tabcontrol


    【解决方案1】:

    我认为这与 TabControl 的行为有关,而不是 Datagrid。我可能错了,但是 TabControl 只有一个内容区域,并且在您更改所选选项卡时会切换内容,这意味着无论您做什么都会重新创建内容。不确定是否有一个简单的解决方法...我很想听听更多知识渊博的人的回答。

    【讨论】:

    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2021-02-08
    • 2019-01-24
    • 2011-06-29
    • 2012-06-22
    相关资源
    最近更新 更多