UWP C#Pivot数据绑定
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UWP C#Pivot数据绑定相关的知识,希望对你有一定的参考价值。
我正试图获得一个动态的支点。所以动态标题和项目。它们取决于集合中的对象数量,它们具有名称和标题。但我不知道如何实现,因为我无法访问这些数据:
<Pivot
x:Name="PivotExample"
ItemsSource="{x:Bind Books}">
<Pivot.HeaderTemplate>
<DataTemplate x:DataType="Books">
<TextBlock Text="{Binding Books.Name, Mode=OneWay}"/>
</DataTemplate>
</Pivot.HeaderTemplate>
<Pivot.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Books.Title}"
</DataTemplate>
</Pivot>
我不知道如何让它发挥作用。感谢帮助。
谢谢J.
答案
这是一个工作示例(如果在编译期间收到任何错误消息,请手动重建项目):
MainPage.xaml中
<Pivot ItemsSource="{x:Bind books}">
<Pivot.HeaderTemplate>
<DataTemplate x:DataType="local:Book">
<TextBlock Text="{x:Bind Name}"/>
</DataTemplate>
</Pivot.HeaderTemplate>
<Pivot.ItemTemplate>
<DataTemplate x:DataType="local:Book">
<TextBlock Text="{x:Bind Title}"/>
</DataTemplate>
</Pivot.ItemTemplate>
</Pivot>
MainPage.xaml.cs中
public sealed partial class MainPage : Page
{
ObservableCollection<Book> books = new ObservableCollection<Book>
{
new Book { Name = "Name1", Title = "Title1" },
new Book { Name = "Name2", Title = "Title2" },
new Book { Name = "Name3", Title = "Title3" },
new Book { Name = "Name4", Title = "Title4" }
};
public MainPage()
{
this.InitializeComponent();
}
}
Book.cs
public class Book
{
public string Name { get; set; }
public string Title { get; set; }
}
请注意,x:Bind
默认使用OneTime
Mode
,这意味着对书籍的名称和标题所做的更改不会自动反映在Pivot
控件中。如果这不是理想的行为,那么你需要使用OneWay
绑定Mode
并在INotifyPropertyChanged
类中实现Book
接口:
MainPage.xaml中
...
<TextBlock Text="{x:Bind Name, Mode=OneWay}"/>
...
<TextBlock Text="{x:Bind Title, Mode=OneWay}"/>
...
Book.cs
public class Book : INotifyPropertyChanged
{
private string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
NotifyPropertyChanged("Name");
}
}
private string title;
public string Title
{
get
{
return title;
}
set
{
title = value;
NotifyPropertyChanged("Title");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
您可以使用nameof
运算符来避免setter中的魔术字符串。
阅读有关使用x:Bind
here进行数据绑定的更多信息。
以上是关于UWP C#Pivot数据绑定的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UWP 中的 Pivot 中使所选枢轴的标题变为粗体?
使用 Contrl+(Shift)+Tab 在 Pivot Control 中循环浏览选项卡/标题? (UWP)