c# - 将 UWP DataGrid 绑定到 MVVM 模型的困惑
问题描述
在这个MSDN 教程中,他们使用Model-View-ViewModel [MVVM]将 DataGrid 绑定到使用{x:Bind} 标记扩展的客户列表,如下所示:
<controls:DataGrid x:Name="dataGrid1"
Height="600" Margin="12"
AutoGenerateColumns="True"
ItemsSource="{x:Bind MyViewModel.Customers}" />
他们有一个Customer
类如下:
//backing data source in MyViewModel
public class Customer
{
public String FirstName { get; set; }
public String LastName { get; set; }
public String Address { get; set; }
public Boolean IsNew { get; set; }
public Customer(String firstName, String lastName,
String address, Boolean isNew)
{
this.FirstName = firstName;
this.LastName = lastName;
this.Address = address;
this.IsNew = isNew;
}
public static List<Customer> Customers()
{
return new List<Customer>(new Customer[4] {
new Customer("A.", "Zero",
"12 North Third Street, Apartment 45",
false),
new Customer("B.", "One",
"34 West Fifth Street, Apartment 67",
false),
new Customer("C.", "Two",
"56 East Seventh Street, Apartment 89",
true),
new Customer("D.", "Three",
"78 South Ninth Street, Apartment 10",
true)
});
}
}
问题MyViewModel
:该教程在哪里?
备注:我使用的是最新版本 6.3.1VS2019
解决方案
该教程中的 MyViewModel 在哪里?
MyViewModel
应该是一个属性,MainPage.xaml.cs
它返回一个类的实例,该类的Customers
属性返回一个IEnumerable<Customer>
.
{x:Bind}
标记扩展似乎没有使用 DataContext 或INotifyPropertyChanged
确实,它不使用 aDataContext
而是生成从源属性获取值的代码,并将其设置在标记中指定的目标属性上。这比在运行时使用反射解析绑定路径要快。
INotifyPropertyChanged
并且属性更改的通知仍然适用{x:Bind}
。
推荐阅读
- apache - 在 Amazon Linux 2 中执行 cron 作业/Yii2 控制器时如何向 apache 用户添加环境变量?
- java - 调试 Hibernate 的 Transaction#begin 时出现“源代码与字节码不匹配”错误
- security - 是否可以将 RSA 私钥放入 Azure Key Vault 证书?
- angular - 基于另一个可观察对象修改
- node.js - Webstorm- Nodemon + Typescript + Docker - 调试器已连接但断点不起作用
- angularjs - 将 key:value 对象分离到数组中
- spartacus-storefront - 如何在 cx-slots 周围添加容器
- django - Django UpdateView 测试时不保存新数据
- postgresql - 将 ASCII 转换为 UTF8 数据库
- python - 多回归的导出失败,“不支持将多分类模型导出到 cpp”