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数据绑定的主要内容,如果未能解决你的问题,请参考以下文章

动态改变 Pivot 控件中枢轴项的设计

如何在 UWP 中的 Pivot 中使所选枢轴的标题变为粗体?

使用 Contrl+(Shift)+Tab 在 Pivot Control 中循环浏览选项卡/标题? (UWP)

在 UWP 应用程序中覆盖 Pivot 标题前景画笔(Win 10 RTM SDK)

UWP中使用Composition API实现吸顶

UWP入门--数据绑定用法