【发布时间】:2011-01-20 17:25:20
【问题描述】:
我正在尝试将现有对象实例作为参数传递给使用 ObjectDatatProvider 创建的对象的构造函数。即使我的对象有一个带有一个参数的构造函数,这总是会失败并出现给定的异常:
System.Windows.Data 错误:34: ObjectDataProvider 无法创建 目的;类型='VegaViewModel'; Error='错误的参数 构造函数。 MissingMethodException:'System.MissingMethodException: 类型的构造函数 'WpfApplication1.VegaViewModel' 不是 成立。在 System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr,活页夹活页夹,对象[] 参数,CultureInfo 文化,对象 [] 激活属性)在 System.Activator.CreateInstance(类型 类型、BindingFlags bindingAttr、Binder 活页夹,对象 [] 参数,CultureInfo 文化,对象[] 激活属性)在 System.Windows.Data.ObjectDataProvider.CreateObjectInstance(异常& e)'
这是我的 Xaml:
<ObjectDataProvider ObjectType="{x:Type WpfApplication1:VegaModel}" MethodName="Sample" x:Key="VegaPnlData"/>
<ObjectDataProvider ObjectType="{x:Type WpfApplication1:VegaViewModel}" x:Key="VegaViewModel">
<ObjectDataProvider.ConstructorParameters>
<ObjectDataProvider ObjectInstance="{StaticResource VegaPnlData}"/>
</ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>
如果我使用这个 xaml,我也会得到同样的错误:
<ObjectDataProvider ObjectType="{x:Type WpfApplication1:VegaViewModel}" x:Key="VegaViewModel">
<ObjectDataProvider.ConstructorParameters>
<StaticResource ResourceKey="VegaPnlData"/>
</ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>
这是 VegaViewModel 类的代码:
public class VegaViewModel
{
public VegaViewModel(VegaModel vegaPnl)
{
VegaPnl = vegaPnl;
}
public VegaModel VegaPnl { get; set; }
}
【问题讨论】:
-
你为什么要这样做?