我希望我的用户控件在Visual Studio的WPF设计器中查看时能够显示数据。
ViewModel没有默认构造函数,所以我编写了自己的静态
这些代码没有任何问题。但是,当我将以下内容添加到XAML中时,问题就开始了:
XAML编辑器在我的属性下放置了一个蓝色的波浪线,错误列表中显示:
"Error 7 Method not found: 'Void ELabel.Manager.ViewModels.ELabelViewModel..ctor(ELabel.Manager.ViewModels.ControlPanelGridLine, ELabel.Control.ISerialPortFactory, ELabel.Data.IRepository,ELabel.ImageGeneration.IPriceLabelGenerator)'."
我的理解是它找到了类,并找到了属性。只是无法解析在getter函数中调用的构造函数。
为什么它无法找到构造函数?为了确认我的代码是正确的,我使用
稍后编辑:
我尝试将此类移动到程序集中(与构造函数相同的程序集)。确实,它现在正常工作了,我可以看到在编辑器中查看控件时的测试数据。奇怪。
我已经反复检查类和构造函数是否为public(当然是,否则我就无法构建应用程序)。
ViewModel没有默认构造函数,所以我编写了自己的静态
TestData
类来构建模型及其所有依赖项。public static class TestData
{
public static ELabelViewModel ELabelViewModel
{
get
{
return new ELabelViewModel
(
new ControlPanelGridLine(TestData.ELabel),
new SerialPortFactoryImpl(),
new Repository(),
new PriceLabelGenerator(TestData.IPriceLabelViewModelFactory)
);
}
}
// Other static getter methods
这些代码没有任何问题。但是,当我将以下内容添加到XAML中时,问题就开始了:
d:DataContext="{x:Static local:TestData.ELabelViewModel}"
XAML编辑器在我的属性下放置了一个蓝色的波浪线,错误列表中显示:
"Error 7 Method not found: 'Void ELabel.Manager.ViewModels.ELabelViewModel..ctor(ELabel.Manager.ViewModels.ControlPanelGridLine, ELabel.Control.ISerialPortFactory, ELabel.Data.IRepository,ELabel.ImageGeneration.IPriceLabelGenerator)'."
我的理解是它找到了类,并找到了属性。只是无法解析在getter函数中调用的构造函数。
为什么它无法找到构造函数?为了确认我的代码是正确的,我使用
DataContext=
而不是,将此测试视图模型作为实际数据上下文。在这种情况下,我打开了应用程序并确认,在运行时,一切都按预期工作:被调用,getter函数中的代码运行并使用此视图模型。只是设计器无法运行代码。
类在一个名为的单独程序集中。编辑器是否无法完全加载此程序集?稍后编辑:
我尝试将此类移动到程序集中(与构造函数相同的程序集)。确实,它现在正常工作了,我可以看到在编辑器中查看控件时的测试数据。奇怪。
我已经反复检查类和构造函数是否为public(当然是,否则我就无法构建应用程序)。