2016-09-16 79 views
1

我需要使用x:绑定将我的数据透视头模板绑定到Course_Tab数据和项目模板内部的gridview到Course_Products数据。我已经成功地完成了数据透视表头模板的绑定,但是由于某些数据模板错误,获取gridview的项目源对我来说有点困难。 这里是代码片段:使用x绑定来自2个不同来源的数据元素的数据绑定:绑定

public ObservableCollection<CourseList> Course_Tab { get; set; } 
public ObservableCollection<Productdetails> Course_Products { get; set; } 


[DataContract] 
public class CourseList 
{ 
    [DataMember] 
    public int CourseID { get; set; } 
    [DataMember] 
    public string CourseCategoryCode { get; set; } 
    [DataMember] 
    public string BoardCode { get; set; } 
    [DataMember] 
    public string CourseCode { get; set; } 
    [DataMember] 
    public string CourseName { get; set; } 
    [DataMember] 
    public string CourseDisplayName { get; set; } 
    [DataMember] 
    public string CourseShortName { get; set; } 
} 

[DataContract] 
public class Productdetails 
{ 
    [DataMember] 
    public int ProductId { get; set; } 
    [DataMember] 
    public string ProductCode { get; set; } 
    [DataMember] 
    public string ProductName { get; set; } 
    [DataMember] 
    public string ProductDescription { get; set; } 
    [DataMember] 
    public string AcademicYearCode { get; set; } 
    [DataMember] 
    public string SubjectName { get; set; } 
    [DataMember] 
    public string Product_Type { get; set; } 
    [DataMember] 
    public string Product_Subtype { get; set; } 
    [DataMember] 
    public string SDcardsize { get; set; } 
    [DataMember] 
    public string Duration { get; set; } 
    [DataMember] 
    public string Graphics { get; set; } 
} 


<Pivot x:Name="Pivot1" ItemsSource="{x:Bind Course_Tab}" SelectionChanged="Pivot1_SelectionChanged"> 
       <Pivot.HeaderTemplate> 
        <DataTemplate x:DataType="data:CourseList"> 
         <TextBlock Text="{x:Bind CourseDisplayName}"/> 
        </DataTemplate> 
       </Pivot.HeaderTemplate> 

       <Pivot.ItemTemplate> 
        <DataTemplate> 
         <GridView ItemsSource="{x:Bind Course_Products}"> 
          <GridView.ItemTemplate> 
           <DataTemplate x:DataType="data:Productdetails"> 
            <Image Source="{x:Bind Graphics}"/> 
           </DataTemplate> 
          </GridView.ItemTemplate> 
         </GridView> 
        </DataTemplate> 
       </Pivot.ItemTemplate> 

      </Pivot> 

回答

1

你真正想要做的是嵌套GridView控件绑定内枢纽。在您的代码中,您将ItemsSource绑定到Pivot控件,然后您想要将集合绑定到Pivot项目内的GridView。所以对于GridView的集合,它是一个嵌套集合。

要结合这一点,我们需要改变的CourseList数据模型的Course_Products添加为喜欢的CourseList属性之一如下:

public class CourseList 
{ 
    [DataMember] 
    public int CourseID { get; set; } 
    [DataMember] 
    public string CourseCategoryCode { get; set; } 
    [DataMember] 
    public string BoardCode { get; set; } 
    [DataMember] 
    public string CourseCode { get; set; } 
    [DataMember] 
    public string CourseName { get; set; } 
    [DataMember] 
    public string CourseDisplayName { get; set; } 
    [DataMember] 
    public string CourseShortName { get; set; } 

    public ObservableCollection<Productdetails> Course_Products { get; set; } 

}

而XAML代码:

<Pivot x:Name="Pivot1" ItemsSource="{x:Bind Course_Tab}" SelectionChanged="Pivot1_SelectionChanged"> 
    <Pivot.HeaderTemplate> 
     <DataTemplate x:DataType="local:CourseList"> 
      <TextBlock Text="{x:Bind CourseDisplayName}"/> 
     </DataTemplate> 
    </Pivot.HeaderTemplate> 
    <Pivot.ItemTemplate> 
     <DataTemplate x:DataType="local:CourseList"> 
      <GridView ItemsSource="{x:Bind Course_Products}"> 
       <GridView.ItemTemplate> 
        <DataTemplate x:DataType="local:Productdetails"> 
         <Image Source="{x:Bind Graphics}"/> 
        </DataTemplate> 
       </GridView.ItemTemplate> 
      </GridView> 
     </DataTemplate> 
    </Pivot.ItemTemplate> 
</Pivot> 

而样品为数据源:

Course_Tab = new ObservableCollection<CourseList> 
{ 
    new CourseList {CourseDisplayName="displayname1" ,Course_Products= new ObservableCollection<Productdetails> 
    { 
     new Productdetails {Graphics="Assets/caffe1.jpg" }, 
     new Productdetails {Graphics="Assets/caffe2.jpg" } 
    }}, 
    new CourseList {CourseDisplayName="displayname2" ,Course_Products= new ObservableCollection<Productdetails> 
    { 
      new Productdetails {Graphics="Assets/caffe1.jpg" } 
    }} 
}; 
+0

不可能在不修改CourseList的数据模型的情况下将其绑定。我期望做的是绑定两个非常不同的数据源,而不用任何类型的标题和项目模板嵌套。 –

+1

在这种情况下,您可以将'CourseList'和'Productdetails'放入一个父源(让它们都是父源的子集)。无论如何,'Pivot'的'ItemsSource'只能是一个。 –

+0

@MonishKoyott如果我的回答对你有帮助,你能否将其标记为已接受? –