2

我正在使用自定义类在 WPF 应用程序中执行验证,并定义了一个继承自 ValidationRule 的类。该类具有我希望 AutoFac 在运行时注入的依赖关系,但 Visual Studio 2010 XAML 设计器需要一个无参数构造函数才能工作。

似乎唯一的解决方案是为依赖项创建一个 DependencyProperty 并将其绑定到 XAML 中,但这意味着该依赖项是可公开访问且可变的,这两者都不是我想要的。

有没有办法将依赖项传递给您打算在 XAML 中使用的类,该类将执行以下所有操作?

  • 不破坏设计师。
  • 保持依赖私有。
  • 确保在使用类之前设置依赖项。
4

2 回答 2

2

你有多想这样做?

XAML 2009中的功能提供了以下可以帮助您的元素:

  • x:Arguments将允许您将参数传递给构造函数。这个参数可以以某种方式绑定到您的视图模型的属性吗?

  • x:FactoryMethod允许您指定创建对象的方法。我假设这可以是您的窗口或用户控件的方法,它可以访问您的依赖容器。

但问题是:XAML 2009 只能在运行时通过 XAML Reader 加载,不能编译。(请参阅无法使新的 2009 XAML 原语正常工作,为什么?)。

所以全局静态对象(eurgh)可能仍然是不那么痛苦的解决方案。


后来编辑:我重读了您的问题,并意识到您已将“不破坏设计师”作为您的要求之一。这将 XAML 2009 从可能的解决方案中排除。

于 2011-12-19T02:40:41.023 回答
-2

这是一个很好的问题。我使用这里演示的技术来保持设计师的工作:http: //jonas.follesoe.no/2008/07/24/youcard-re-visited-implementing-dependency-injection-in-silverlight/

它不仅可以保持工作,而且您可以使用该技术将模拟放入设计器中。非常便利。

于 2011-12-19T04:29:44.700 回答