2012-11-14 4 views
1

4 개의 TabItem이있는 TabControl이 있습니다. 각 TabItem 안에는 GridView와 툴바가 있습니다. MahApps.Metro (Window 및 TabControl의 경우) 및 RadControls (GridView 및 Toolbar의 경우)를 사용합니다. MahApps.Metro TabControl을 AnimatedSingleRowTabControl과 함께 사용하므로 탭을 전환 할 때마다 애니메이션이 변경되는 탭이 있습니다.MahApps.Metro TabControl 채워진 GridView가있는 뒤틀림

GridView가 비어있는 경우 애니메이션이 부드럽지만 GridView에서 데이터로 채워지면 지연됩니다. 탭을 전환 할 때마다 항상 약 1-2 초 지연됩니다. 테이블의 최대 행 수가 최대 73 개입니다. 그래서로드하는 것이 너무 어렵다고 생각하지 않습니다.

GridView를 테이블이나 다른 이유로 바인딩하는 올바른 방법을 사용하지 않았기 때문에 이것이 아닌지 잘 모르겠습니다.

  • 가의 GridView 빈 전환 탭을하자 슬라이드 애니메이션 후 채우기 :

    나는 그래서 내 솔루션 중 하나, 애니메이션을 부드럽게합니다.

  • 어떻게 든 애니메이션을 부드럽게 만듭니다 (바인딩 방식 변경).

, 나는 위의 옵션을 수행하는 방법을 모르는 : P 누구든지 나를 도울 수 있습니까? 다른 해결책을 환영합니다. 나는의 GridView 바인딩이 방법

<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> 

:

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 
    } 

참고 :

내 코드입니다 I : 내가 WPF :

편집에 여전히 새로운 해요 TabItem에 대한 첫 번째 액세스가 지연되는 것만 알았습니다. TabItem을 클릭하고 다른 탭으로 전환하면 지연됩니다. 그러나 이전 탭으로 다시 전환하면 부드럽게 움직입니다.

답변

0

Tabcontrol 안에 Gridview를 넣지 않거나 "지속성"TabControl을 사용해야합니다.