【发布时间】: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