使用 x:Bind 来自 2 个不同来源的枢轴元素中的数据绑定
data binding in pivot element from 2 different sources using x:Bind
我需要使用 x:Bind[=15= 将数据透视表 header 模板绑定到 Course_Tab 数据,并将项目模板内的 gridview 绑定到 Course_Products 数据].我已经成功完成了 pivot header 模板的绑定,但是由于一些数据模板错误,获取 gridview 的项目源对我来说有点困难。
这是代码片段:
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>
您真正想要做的是将嵌套的 GridView 绑定到 Pivot 中。在您的代码中,您将 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" }
}}
};
我需要使用 x:Bind[=15= 将数据透视表 header 模板绑定到 Course_Tab 数据,并将项目模板内的 gridview 绑定到 Course_Products 数据].我已经成功完成了 pivot header 模板的绑定,但是由于一些数据模板错误,获取 gridview 的项目源对我来说有点困难。 这是代码片段:
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>
您真正想要做的是将嵌套的 GridView 绑定到 Pivot 中。在您的代码中,您将 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" }
}}
};