我有一个TabControl 4 TabItems。在每个TabItem中,我有一个GridView和一个工具栏。 我使用MahApps.Metro(用于Window和TabControl)和telerik RadControls(用于GridView和Toolbar)。 我使用MahApps.Metro TabControl与AnimatedSingleRowTabControl,所以每次我切换选项卡有一个选项卡更改动画。MahApps.Metro TabControl Laggy与填充GridView
当GridView为空时,动画是平滑的,但是当GridView填充数据时,它是滞后的。 每次切换标签时,它总是滞后约1-2秒(s)。 我的表格只有最多73行。所以,我认为加载不会太多。
我不知道这是因为我没有使用正确的方式绑定GridView与表或其他原因。
我想平滑的动画,所以我的解决办法:
让GridView的空切换时片和幻灯片动画后填充它。
不知何故使动画平滑(改变绑定方式)。
但是,我不知道如何来完成上面的选项:P 任何人都可以帮我吗? 另一个解决方案是受欢迎的。
这是我的代码:
<TabControl SelectionChanged="TabControl_SelectionChanged">
<TabItem Name="Tab_Collection"
Header="Collection"
Style="{StaticResource MetroTabItem}">
<StackPanel Margin="20,10">
<telerik:RadToolBar telerik:StyleManager.Theme="Metro"
Margin="0,0,0,5"
Width="338"
GripVisibility="Collapsed"
OverflowButtonVisibility="Collapsed"
HorizontalAlignment="Right">
<Button Name="Btn_CollectionAdd"
Width="80"
Height="25"
Content="Add"/>
<Button Name="Btn_CollectionEdit"
Width="80"
Height="25"
Content="Edit"/>
<Button Name="Btn_CollectionDelete"
Width="80"
Height="25"
Content="Delete"/>
<telerik:RadToolBarSeparator/>
<Button Name="Btn_CollectionSearch"
Width="80"
Height="25"
Content="Search"
Click="Btn_Search_Click"/>
</telerik:RadToolBar>
<telerik:RadGridView Name="Dgv_Collection" telerik:StyleManager.Theme="Metro"
Margin="0,0,0,10"
Height="505"
BorderBrush="#25A0DA"
BorderThickness="1"
SelectionUnit="FullRow"
AutoGenerateColumns="False"
CanUserInsertRows="False"
CanUserDeleteRows="False"
CanUserResizeRows="False"
CanUserFreezeColumns="False"
CanUserSortColumns="False"
CanUserResizeColumns="False"
CanUserReorderColumns="False"
ShowGroupPanel="False"
RowIndicatorVisibility="Collapsed"
EditTriggers="None">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn Width="30"
Header="#"
IsFilterable="False"
DataMemberBinding="{Binding id}"/>
<telerik:GridViewDataColumn Width="*"
Header="Title"
IsFilterable="False"
DataMemberBinding="{Binding title}"/>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
</StackPanel>
</TabItem>
//I do the same for the rest 3 TabItems
</TabControl>
我绑定的GridView这样:
private void loadCollection()
{
String conn = connection_string;
String sql = null;
try
{
sql = "SELECT * FROM Tbl_Information";
SqlCeDataAdapter dataAdapter = new SqlCeDataAdapter(sql, conn);
SqlCeCommandBuilder commandBuilder = new SqlCeCommandBuilder(dataAdapter);
DataTable table = new DataTable();
dataAdapter.Fill(table);
Dgv_Collection.ItemsSource = table;
}
catch (SqlCeException ex)
{
MessageBox.Show(ex.Message);
}
}
//load the rest 3 table the same way
public MainPage()
{
InitializeComponent();
loadCollection();
//call the rest
}
注:我还是很新的WPF :)
编辑: 我发现它只是在第一次访问TabItem时才滞后。如果我点击一个TabItem然后切换到另一个Tab它滞后。但是,当我切换回前一个标签时,它的动画流畅。