【问题标题】:How to update bindings inside of a gridview?如何更新网格视图内的绑定?
【发布时间】:2016-03-31 04:12:00
【问题描述】:

我将使用此处的解决方案文件作为示例:https://github.com/Windows-Readiness/AbsoluteBeginnersWin10/tree/master/UWP-040/UWP-040(如果创建者对我链接这些示例有疑问,我将自己制作并上传它们)。目前,gridview 绑定到类book 的列表。 gridview 的 itemtemplate 绑定到的属性之一称为Title。但是,如果我更新 Title,并调用 Bindings.Update(),它不会更新它。为了说明这一点,我在页面上添加了一个按钮,并使其操作如下:

Books[0].Title = "hello";
Bindings.Update();

现在,当我按下按钮时,我想要发生的事情是让 gridview 上的第一个项目将其标题更改为“hello”。然而,什么也没有发生。我如何实现这种行为?该解决方案也需要在 C++/CX 中工作,因为那是我将使用它的地方。

【问题讨论】:

    标签: c# xaml gridview uwp c++-cx


    【解决方案1】:

    你的示例代码中Book的实现是

    public class Book
    {
        public int BookId { get; set; }
        public string Title { get; set; }
        public string Author { get; set; }
        public string CoverImage { get; set; }
    }
    

    如果你想在代码中更新属性,你必须实现INotifyPropertyChanged。任何属性更改都会自动传播到您的 UI。多个 MVVM 框架提供了基础实现,让您的工作更轻松。

    编辑:正如@justanotherxl 正确注意到的那样:x:Bind 默认为OneTime,对于更新,这必须更改为OneWay(这是常规绑定的默认设置,因此这些绑定可以开箱即用)。

    【讨论】:

    • 感谢您的回复。使用 x:Bind 和 INotifyPropertyChanged 时是否需要将绑定设置为 Mode=OneWay?另外,使用它时对性能的影响有多大?圣诞快乐!
    • 您完全正确:常规绑定开箱即用,x:Bind 需要添加 OneTime 绑定。 INPC 对性能的影响可以忽略不计。
    猜你喜欢
    • 2011-11-10
    • 2021-07-01
    • 2011-09-07
    • 2014-08-17
    • 2016-03-15
    • 2013-02-21
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    相关资源
    最近更新 更多