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_NAMEFIRST_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。

您可能想要查看像PrismReactiveUI这样的MVVM框架

作为旁注,我认为FamilyName和GivenName比FirstName和LastName更好,考虑到像韩国这样的国家名是第一名的国家。

以上是关于WPF中的自定义模型绑定[重复]的主要内容,如果未能解决你的问题,请参考以下文章

WPF DataGrid 中的自定义复选框不更新绑定

wpf 自定义控件的自定义属性的数据绑定问题

设置绑定到 WPF 用户控件内的自定义 DependencyProperty

无法数据绑定滑块 WPF 的值 [重复]

泛型类型的自定义模型绑定

ASP.NET 5 MVC 6 RC1 API 中的自定义模型绑定异常