WPF数据绑定到外部数据模型

时间:2009-05-17 15:17:22

标签: c# wpf data-binding

我最近开始使用WPF开发一个应用程序,而且我真的无法理解以下事情:

我的应用程序的域模型是与硬盘序列化的简单POCO对象。然后我有WPF应用程序,我想将它绑定到模型的各个部分。我需要能够通知UI底层模型的更改(例如,实现INotifyPropertyChanged)但我想这样做而不干涉我的模型(读取而不修改模型的当前实现)。除了修改模型之外,如何实施更改通知? 我想这样做的原因是我在多个项目中共享模型,只有一个是WPF,我不想在模型中添加不必要的代码。 我想到的一件事是创建模型的“副本”(使用INotifyPropertyChanges和BindingLists等),但这似乎很难维护...... 提前谢谢。

的Ondrej

2 个答案:

答案 0 :(得分:2)

查看MVVM

下载其源代码,请参阅层次结构。

基本上,您仍然将简单的POCO对象保留为模型。然后围绕模型创建一个ViewModel,如下所示:

public class CustomerViewModel : INotifyPropertyChanged
{
        readonly Customer _customer;
        public CustomerViewModel(Customer customer)
        {
            _customer = customer;
        }

        public string FirstName
        {
            get { return _customer.FirstName; }
            set
            {
                if (value == _customer.FirstName)
                    return;

                _customer.FirstName = value;

                OnPropertyChanged("FirstName");
            }
        }
        ...
}

答案 1 :(得分:0)

我在这里看到两种可能的解决方案:

  1. 仅为WPF屏幕使用单独的模型(MVVM pattern)。这将需要维护两个不同的模型,也准备好大量的映射代码。
  2. 使用PostSharp使用所有必需的样板代码“增强”您的模型。 Here您可以找到自动INotifyPropertyChanged实现的示例。请记住,将PostSharp引入项目是一个重要的决定,所以我建议先熟悉它。