WPF中的自定义模型绑定[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF中的自定义模型绑定[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
这是我的第一个问题,不仅仅是stackoverflow,而是整个互联网。我有一个wpf项目,其中包含从Sql server数据库自动生成的Entity Framework 6 EF6模型。我有以下课程:
public partial class SA_EMPLOYEE
{
public int EMPID { get; set; }
public string FIRST_NAME { get; set; }
public string LAST_NAME { get; set; }
}
//then I added a custom property
public partial class SA_EMPLOYEE
{
public string FULL_NAME => $"{FIRST_NAME} {LAST_NAME}";
}
我有一个绑定到myDbContext.SA_EMPLOYEE.ToList()
的列表框,并显示FULL_NAME
属性和一些控件绑定到所选项目。
当我在列表框中显示FIRST_NAME
时,如果我在文本框中更改它而不是FULL_NAME
,则会立即更改。如果任何FULL_NAME
或FIRST_NAME
发生变化,任何改变LAST_NAME
属性的工作都会发生变化。
我看到了类似的问题here。
谢谢任何人都可以帮忙。
您的解决方案是一个INotifyPropertyChanged接口。从这个link,您将找到问题的确切解决方案。
根据您的描述,我认为您可能应该使用MVVM pattern(如上所述)。创建一个ViewModel并绑定到该模型而不是数据库模型。
public class EmployeeViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string FirstName {get;set;}
public string LastName {get;set;}
public string FullName => $"{FirstName} {LastName}";
}
如果你使用Fody/PropertyChanged,你会自动调用PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("FullName"));
,否则你必须在FirstName和LastName属性的集合中手动调用OnPropertyChanged。请参阅上面的链接以获取示例。
然后,将列表框绑定到员工的IObservableCollection。
您可能想要查看像Prism或ReactiveUI这样的MVVM框架
作为旁注,我认为FamilyName和GivenName比FirstName和LastName更好,考虑到像韩国这样的国家名是第一名的国家。
以上是关于WPF中的自定义模型绑定[重复]的主要内容,如果未能解决你的问题,请参考以下文章