2015-01-27 1 views
0

내 사용자 정의 컨트롤 중 하나에서 Infragistics TabGroupPane을 사용하고 있습니다. 바인딩 용으로 MVVM을 사용합니다. 다른 usercontrol에서이 usercontrol을 사용할 때 Infragistics ContentPane에 대한 DataTemplate을 설정하려고합니다. 어떻게해야합니까? 다음은 Infragistics ContentPane에 대한 datatemplate 설정

내가 사용하고 코드이지만, 작업 doesnot :

<UserControl.Resources>   
    <DataTemplate DataType="{x:Type infragistics:ContentPane}"> 
     <DataGrid 
     ItemsSource="{Binding Content, PresentationTraceSources.TraceLevel=High}" IsReadOnly="True" HeadersVisibility="Column" SelectionUnit="FullRow" AutoGeneratingColumn="DataGrid_AutoGeneratingColumn_1" 
      CanUserReorderColumns="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.IsReorderSupported}" 
      CanUserSortColumns="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.IsColSortable}"/> 
    </DataTemplate> 

    <DataTemplate DataType="{x:Type infragistics:PaneHeaderPresenter}"> 
     <DataGrid 
     ItemsSource="{Binding Content, PresentationTraceSources.TraceLevel=High}" IsReadOnly="True" HeadersVisibility="Column" SelectionUnit="FullRow" AutoGeneratingColumn="DataGrid_AutoGeneratingColumn_1" 
      CanUserReorderColumns="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.IsReorderSupported}" 
      CanUserSortColumns="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.IsColSortable}"/> 
    </DataTemplate> 
</UserControl.Resources> 

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

    <ContentControl Name="someContent" Content="{Binding InfraTabs}" Visibility="Collapsed"/> 

</Grid> 

참고 : InfraTabs을의 ContentPane의 모음입니다.

감사합니다,

RDV

답변

0

난 아직 답을 찾고 있어요,하지만 난이 문제에 대한 해결 방법을 발견했다 : 나는 더미 InfraTabViewModel을 생성하고 뷰 모델로의 ContentPane의 내용을 할당 :

해결 과정 . 내 견해로 InfraTabViewModel에 대한 데이터 템플릿을 추가하고 작동합니다! 보기에서 : 뷰 모델에서

 <DataTemplate DataType="{x:Type vm:InfraTabViewModel}"> 
     <DataGrid 
     ItemsSource="{Binding DGView, PresentationTraceSources.TraceLevel=High}" IsReadOnly="True" HeadersVisibility="Column" 
      SelectionUnit="FullRow" AutoGeneratingColumn="DataGrid_AutoGeneratingColumn_1" 
      CanUserReorderColumns="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.IsReorderSupported}" 
      CanUserSortColumns="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.IsColSortable}"/> 
    </DataTemplate> 

:

public class InfraTabViewModel 
{ 
    public object DGView { get; set; } 
} 

public class MyViewModel 
{ 
    ObservableCollection<ContentPane> InfraTabs = new ObservableCollection<ContentPane>(); 

    public ObservableCollection<ContentPane> InfraTabs 
    { 
     get; 
     set; 
    } 

    public MyViewModel() 
    { 
     DataTable dt=new DataTable(); 
     //Code to populate the dataTable 

     ContentPane cp = new ContentPane(); 
     cp.Header = "Some DataGrid"; 
     cp.Content = dt.AsDataView(); // does not work. 
     cp.Content = new InfraTabViewModel { DGView = dt.AsDataView() }; // works. 
    } 
} 
다음은 해결 코드
관련 문제