我有一个包含4个TabItem的TabControl。在每个TabItem里面,我有一个GridView和一个工具栏。 我使用MahApps.Metro(用于Window和TabControl)和telerik RadControls(用于GridView和Toolbar)。 我使用MahApps.Metro TabControl和AnimatedSingleRowTabControl,所以每次切换标签时都会有一个标签更改动画。
当GridView为空时,动画是平滑的,但是当GridView填充数据时,它就会滞后。 每次切换标签时,它总是滞后1-2秒左右。 我的表只有最多73行。所以,我不认为加载太多了。
我不知道这是不是因为我没有使用正确的方法将GridView与Table绑定或其他原因。
我想平滑动画,所以我的解决方案是:
在切换制表符时让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它是滞后的。但是,当我切换回上一个标签时,它的动画效果很流畅。
答案 0 :(得分:0)
不要将Gridview放在Tabcontrol中,否则你必须使用&#34; persistant&#34; TabControl