【问题标题】:UserControl content not updatingUserControl 内容未更新
【发布时间】:2017-04-29 14:39:17
【问题描述】:

我正在为自己创建一个简单的 UWP 应用程序,但对绑定和所有这些东西的工作原理缺乏了解。不知道怎么解释更好所以我创建了一个简单的例子:https://gist.github.com/anonymous/744dc688d0663a3c14b7a2fc424316f8

程序在主屏幕上有一个可选项目列表。我可以选择几个项目,按一个按钮,程序将显示带有选定项目的新浮动面板(我在我的原始程序中进一步管理这些项目)。我希望这个面板成为单独的控件,因为我的 MainPage 已经被代码填满了。

问题是。当我第一次单击按钮时 - 它按我的预期工作。但是,当我更改所选项目并再次单击按钮时,它会显示面板,其中包含第一次选择的项目。

我的问题是 - 如何让它发挥作用?我有一种感觉,它必须是 INotifyPropertyChanged 的东西,但无法理解。

我也很高兴听到总体建议。我不是 c# 开发人员。我其实是系统。管理员,但我对 python 了解一点,我在大学学习了 Delphi 7。所以我在创建这个应用程序的过程中学习了 c#。

UPD:如果我将SelectedItemsView.xaml的第28行从

ItemsSource="{x:Bind SelectedItems}"

ItemsSource="{Binding SelectedItems, ElementName=SelectedItemsViewRoot}"

(并将x:Name="SelectedItemsViewRoot" 添加到用户控件属性中)。它根据需要工作。所以新的问题来了——这是正确的方法吗?我认为Binding 是一种遗留物,x:Bind 是应该在新应用中使用的更新方法。

【问题讨论】:

    标签: c# xaml user-controls uwp


    【解决方案1】:

    可以使用{Binding},但如果您想坚持使用{x:Bind},您可以使用 OneWay 模式(而不是默认的 OneTime)来执行此操作。例如:{x:Bind SelectedItems, Mode=OneWay}

    我强烈建议您阅读以下两个官方教程: Data binding overviewData binding in depth

    简而言之,{Binding} 不是遗留物。它实际上更灵活一些,但它是在运行时执行的,而{x:Bind} 是在编译时执行的,因此性能更高。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2023-02-13
      相关资源
      最近更新 更多