【问题标题】:Prism/mef ViewModel: pro and con of property against ctorPrism/mef ViewModel:财产对 ctor 的利弊
【发布时间】:2011-01-04 11:03:51
【问题描述】:

在 StockTraderRI 示例代码中,视图模型由 MEF 使用属性注入:

[Export(typeof(IOrdersView))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class OrdersView : UserControl, IOrdersView
{
  public OrdersView()
  {
    InitializeComponent();
  }

  [Import]
  [SuppressMessage("Microsoft.Design", "CA1044:PropertiesShouldNotBeWriteOnly", Justification = "Needs to be a property to be composed by MEF")]
  public IOrdersViewModel ViewModel
  {
    set { this.DataContext = value; }
  }
}

我想知道的是:为什么不使用这样的 ImportingConstructor 来注入 ViewModel:

[Export(typeof(IOrdersView))]
[PartCreationPolicy(CreationPolicy.NonShared)]
public partial class OrdersView : UserControl, IOrdersView
{
  [ImportingConstructor]
  public OrdersView(IOrdersViewModel ViewModel)
  {
    InitializeComponent();
    this.DataContext = ViewModel;
  }
}

StockTraderRI 示例确实使用属性而不是 ctor 的参数,是否存在我想念的特殊功能、问题或原因?

【问题讨论】:

    标签: mvvm prism


    【解决方案1】:

    因为在 XAML 中部分定义的类型不能很好地与参数化构造函数配合使用。 XAML 建立在“创建空白对象并随后填写属性”范例之上。

    【讨论】:

    • 天哪,这对我来说太容易发现了 :) 感谢您的快速帮助!
    • @Sam:有趣的是,我开始为使用 ViewModel-first 方法遇到的类似案例编写更长的答案。大约进行到一半时,我意识到这是 XAML 的事情,所以你确实有公司在那里 :)
    猜你喜欢
    • 2013-01-29
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多