我正试图获得动态支点。所以动态标题和项目。它们取决于集合中的对象数量,它们具有名称和标题。 但我不知道如何实现这一点,因为我无法访问这些数据:
<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>
我不知道如何让它发挥作用。感谢帮助。
由于 学家
答案 0 :(得分:1)
这是一个工作示例(如果在编译期间收到任何错误消息,请手动重建项目):
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
,这意味着对图书名称和标题所做的更改不会自动反映在{{1}中} 控制。如果这不是所需的行为,那么您需要使用Pivot
绑定OneWay
并在Mode
类中实现INotifyPropertyChanged
接口:< / p>
MainPage.xaml中
Book
Book.cs
...
<TextBlock Text="{x:Bind Name, Mode=OneWay}"/>
...
<TextBlock Text="{x:Bind Title, Mode=OneWay}"/>
...
您可以使用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
here了解有关数据绑定的详情。