【发布时间】:2018-06-05 05:24:08
【问题描述】:
我正在开发一个 UWP 应用程序,它本质上是几个相同对象的控制面板 - 我们称它们为板对象。
从功能上讲,用户需要能够创建和删除具有特定属性的板对象,并且所有当前可用的板对象都显示在主页上,以及它们相应的独特属性以及用于修改它们的控件。
他们实现这一点的方式是在主页上创建一个网格,并为每个可用板添加一个框架到网格列中,每个框架导航到自定义 PlateView 页面以显示基本上是水平列表的内容PlateView 列。
我的问题是我希望能够将每个控件/属性的数据从每个 Plate 双向绑定到其对应的 PlateView。
现在,我将所有板的列表作为公共变量存储在 App.cs 中,因为我需要能够在整个生命周期中从应用程序的多个部分获取和修改此主列表。
按照我理解 UWP 文档中数据绑定描述的方式,我的 Plate 对象可以实现 INotifyPropertyChanged,或者我可以创建一个单独的 PlateViewModel 类来实现它。
使用 Plate 实现它,PlateView 会将其 ViewModel 设置为 List 中 Plate 的正确索引 (this.ViewModel = App.plateList[1]),但我假设会复制...?因此,如果我修改 PlateView 中的变量,它实际上不会更改 App.cs 中的 Plate 对象。
有了一个新的 PlateViewModel 类,我不明白我怎么不会有同样的问题,但是在 PlateViewModel 类里面。例如,MS 的文档显示:
public class RecordingViewModel
{
private Recording defaultRecording = new Recording();
public Recording DefaultRecording { get { return this.defaultRecording; } }
}
即使我在 PlateViewModel 中设置了一个内部 Plate 对象,我也不必从 XAML {x:bind ...} 语法中调用一个变量吗?所以我必须将每个变量从正确的 Plate 复制到 PlateViewModel 中,它们不一定会链接到 App.cs 中的原始 Plate 对象?
谢谢!
【问题讨论】:
标签: c# xaml data-binding uwp win-universal-app