我将我的XAML文件声明为
<l:MoineauPumpCorrectionsWindowBase x:Class="WeinCad.Controls.View.MoineauPumpCorrectionsWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:WeinCad.Controls.View"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:vm="clr-namespace:WeinCad.Controls.ViewModel"
Title="MoineauPumpCorrectionsWindow" Height="389.8" Width="538.2"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance vm:MoineauPumpCorrectionsViewModel
, d:IsDesignTimeCreatable=True}"
>
但是我收到了错误
Warning 1 Could not load type
'_.di16.WeinCad.Controls.WeinCadViewModelBase_MoineauPumpCorrectionsViewModel'
from assembly
'_ExpressionDynamicAssembly_b102c6ac-1283-4a35-b5e2-4820bcb2588f
, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
(WeinCad.Controls.ViewModel.MoineauPumpCorrectionsViewModel)
C:\.....\MoineauPumpCorrectionsWindow.xaml
17 9 WeinCad.Controls
我知道在我的viewmodel中加载我应该有一个零args构造函数的类型,如下所示
public MoineauPumpCorrectionsViewModel()
: this(new MockIOService(), DesignCorrections)
{
}
但我仍然得到错误。
请注意,Resharper仍然可以使用声明对XAML文件进行静态分析,但我没有得到设计者对视图模型的支持。
有人可以解释如何摆脱这个错误吗?
答案 0 :(得分:0)
我找到了一种重现此行为的方法。我意识到这很晚,但可能对未来的读者有所帮助。此外,这适用于VS2013,但我认为VS2012的行为类似。
我对根元素的标记如下
d:DataContext="{d:DesignInstance vms:ClientViewModel}"
WPF设计器每次都抛出“无法加载类型”异常。请注意,我的项目处于早期阶段,所以对于类
而言,字面上并没什么特别之处根据@ Aybe的评论,我决定尝试使用资源文件,如下所示
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MyApp.ViewModels">
<vm:ClientViewModel x:Key="DesignTimeClientViewModel">
</vm:ClientViewModel>
</ResourceDictionary>
在App.xaml中添加引用
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/DesignTimeData/DesignTimeViewModels.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
然后我像这样更新了根元素绑定
d:DataContext="{StaticResource DesignTimeClientViewModel}"
使用静态资源可以在不进行任何其他更改的情况下解决错误。