2009-11-24 3 views
0

나는 두 개의 탭이있는 탭 컨트롤을 가지고 있습니다. 각 탭의 내용은 ListCollectionView에 바인드되고 데이터 템플리트에는 항목을 표시하는 격자가 있습니다. 문제는 정렬 할 열을 클릭하면 다른 탭을 선택하고 첫 번째 탭으로 돌아 가면 정렬이 지워진다는 것입니다. 알려진 버그입니까?WPF Toolkit Datagrid 버그

<Window x:Class="WpfApplication3.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit" 
Title="Window1" Height="538" Width="1223"> 
<Window.Resources> 
    <DataTemplate x:Key="TestTemplate"> 
     <toolkit:DataGrid ItemsSource="{Binding}" AutoGenerateColumns="false" IsReadOnly="True" > 
      <toolkit:DataGrid.Columns> 
       <toolkit:DataGridTextColumn Binding="{Binding IntVal}" Header="Number"></toolkit:DataGridTextColumn> 
       <toolkit:DataGridTextColumn Binding="{Binding StringVal}" Header="String"></toolkit:DataGridTextColumn> 
      </toolkit:DataGrid.Columns> 
     </toolkit:DataGrid> 
    </DataTemplate> 
</Window.Resources> 
<Grid> 
    <TabControl> 
     <TabItem Header="tab1" ContentTemplate="{StaticResource TestTemplate}" x:Name="a" Content="{Binding}"/> 
     <TabItem Header="tab2" ContentTemplate="{StaticResource TestTemplate}" x:Name="b" Content="{Binding}"/> 
    </TabControl> 
</Grid> 

코드 behid :

public partial class Window1 : Window 
{ 
    public Window1() 
    { 
     InitializeComponent(); 

     List<test> intt = new List<test> 
     { 
      new test { IntVal = 5, StringVal = "abc" }, 
      new test { IntVal = 12, StringVal = "cc" }, 
      new test { IntVal = 2, StringVal = "sdgc" }, 
      new test{IntVal=64,StringVal="df"}, 
      new test{IntVal=1234,StringVal="werw"}, 
      new test{IntVal=14,StringVal="sdvvd"}, 
      new test{IntVal=136,StringVal="aasr"} 
     }; 

     List<test> intt2 = new List<test> 
     { 
      new test { IntVal = 5, StringVal = "abc" }, 
      new test { IntVal = 12, StringVal = "cc" }, 
      new test { IntVal = 2, StringVal = "sdgc" }, 
      new test{IntVal=64,StringVal="df"}, 
      new test{IntVal=1234,StringVal="werw"}, 
      new test{IntVal=14,StringVal="sdvvd"}, 
      new test{IntVal=136,StringVal="aasr"} 
     }; 

     this.a.DataContext = new ListCollectionView(intt); 
     this.b.DataContext = new ListCollectionView(intt2); 
    } 

    public class test 
    { 
     public int IntVal { get; set; } 
     public string StringVal { get; set; } 
    } 
} 

답변

0

내가있는 TabControl 파괴와 자식 선택한 탭을 변경할 때마다 다시 생각 여기

는 코드입니다. 그것은 왜 그 종류가 유지되지 않는지 설명 할 것입니다.

WPF Disciples Google 그룹에서 this discussion을 확인하면 문제를 해결하는 방법에 대한 정보를 얻을 수 있습니다.

+0

감사 나는 그것에게 시험을주고 도움이된다면 볼 수 있습니다. 탭에서 데이터 격자를 하드 코딩 할 때 작동합니다. 나는 당신이 템플렛을 사용할 경우에만 탭이 모든 것을 처음부터 창조한다고 생각한다. –

0

비슷한 문제가 발생했습니다. wpf는 데이터 템플릿에 대해 동일한 contentpresenter를 사용한다고 생각합니다. 귀하의 경우 datagrid의 인스턴스가 동일합니다, 당신은 탭을 전환 할 때 데이터 만 리바운드됩니다. 내가 한 것은 codebehind에서 컨트롤의 인스턴스를 만들고 TabItem의 콘텐츠 속성으로 설정하는 것이 었습니다. 이 도움이 예컨대

TabItem ti = new TabItem(); 
ti.DataContext = intt; 
ti.Content = new DataGrid(); 
myTabControl.Items.Add(t); 

희망 ..

관련 문제