【问题标题】:Binding Custom User Control to a RegionContext's Property将自定义用户控件绑定到 RegionContext 的属性
【发布时间】:2015-02-19 17:13:44
【问题描述】:

我正在通过编写一个小型 HR 应用程序来学习 Prism(版本 5)框架。

My EmployeeSummaryView 是一个简单的主详细信息页面,它使用选项卡控件来更好地组织 Person 类型的属性。此选项卡控件有一个区域上下文绑定到 CurrentEmployee。

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime Birthday { get; set; }
    public string PhoneNumber { get; set; }
    public Address MailingAddress { get; set; }
    public Person EmergencyContact { get; set; }
}

我在“联系信息”选项卡上苦苦挣扎。在这里,我使用自定义用户控件来编辑邮寄地址。我建立绑定的第一直觉是执行以下操作:

<local:EditAddressView DataContext="{Binding CurrentEmployee.MailingAddress}"/>

但是,我对 Prism 和 MVVM 了解得越多,这种气味就越难闻。

将自定义控件绑定到 RegionContext 上的属性的正确方法是什么?

【问题讨论】:

  • Prism 和 MVVM 是怎么回事? UC 应该被认为是与 Type 紧密对齐的 UI,无论该 UI 是显示该 Type 的对象的状态,还是正在编辑它等等。这非常好。你闻的是什么味道?
  • @Will 说在路上我想添加额外的逻辑来控制是否可以编辑字段,或者可能是一个命令来做一些查找,没有视图模型可以放置它。
  • 放到Address类中。继续。去做吧。模糊模型和视图模型之间的界限。因为,你知道吗,它没有区别。生活在边缘。这里很棒。而且它不臭。

标签: c# wpf mvvm prism-5


【解决方案1】:

通过绑定到模型而不是视图模型,您将自己逼入绝境。用 ViewModels 包装你的模型并绑定到那些。

public class PersonViewModel
{
    public PersonViewModel(Person person)
    {
       ...
       MailingAddress = new AddressViewModel(person.address);
    }

    public AddressViewModel MailingAddress { get; private set; }
}

【讨论】:

    猜你喜欢
    • 2018-03-11
    • 2011-05-11
    • 1970-01-01
    • 2011-08-29
    • 2011-06-22
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多