Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将设计时视图模型放在单独的部件中?_C#_Silverlight_Expression Blend_Mvvm Light_Viewmodellocator - Fatal编程技术网

C# 如何将设计时视图模型放在单独的部件中?

C# 如何将设计时视图模型放在单独的部件中?,c#,silverlight,expression-blend,mvvm-light,viewmodellocator,C#,Silverlight,Expression Blend,Mvvm Light,Viewmodellocator,我将MVVM灯光和棱镜与视图模型定位器模式一起使用。我真的很喜欢在Blend中使用设计时视图模型,但我不一定要将其与生产代码一起提供。有没有办法将设计时视图模型放在另一个部件中,然后告诉视图模型定位器在那里找到它?设计时程序集(*.design.dll)似乎有助于解决此问题,但我不太清楚如何解决。Mike, 将以下内容添加到XAML中 xmlns:designTime="clr-namespace:MyDesignTimeNS;assembly=MyBinaryName" d:DataConte

我将MVVM灯光和棱镜与视图模型定位器模式一起使用。我真的很喜欢在Blend中使用设计时视图模型,但我不一定要将其与生产代码一起提供。有没有办法将设计时视图模型放在另一个部件中,然后告诉视图模型定位器在那里找到它?设计时程序集(*.design.dll)似乎有助于解决此问题,但我不太清楚如何解决。

Mike,
将以下内容添加到XAML中

xmlns:designTime="clr-namespace:MyDesignTimeNS;assembly=MyBinaryName"
d:DataContext="{d:DesignInstance designTime:DesignTimeObjectNameViewModel, IsDesignTimeCreatable=True}

这样,我就可以将设计时数据保存在一个单独的二进制文件中,而不进行分发。

为什么不将xaml文件与DesignData构建操作一起使用?我已经回答了一个问题,我已经解释了如何正确使用它:,但是问这个问题的人想要的不是混合中的设计数据。我想知道为什么每个人都不愿意使用这么简单的方法。我不使用DesignData,因为我的产品视图模型中注入了大量的构造函数依赖关系。这意味着没有默认构造函数,因此没有从XAML创建。VML定位器模式为我解决了所有这些问题。即使我遗漏了一些东西,并且可以将DesignData与构造函数注入的VM混合使用,但仍然会在生产程序集中留下额外代码和资源的问题。因此,我将扭转你的问题:如果我使用DesignData,我如何将设计资源字典放入另一个程序集中,并让Blend加载它,而不必发送该程序集?如果要清除属性CustomTool(删除MsBuild值),实际上没有这样的问题。之后,您将能够定义一个没有默认构造函数的模型。具有此操作的文件(设计数据而不是页面或资源)将不包括在最终部件中。如果您不相信,您可以尝试使用一些反编译器(如reflector)打开程序集。@vorrtex这就是技巧所在-这意味着我需要调整ViewModel类,但总的来说,它比定义其他类效果更好。不过,您确实需要一个无参数构造函数——即使您清除了自定义工具,没有该构造函数,设计时支持也无法工作。我没有想过将设计内容放在另一个程序集中的单独xmlns中,太好了!我发现IsDesignTimeCreatable属性的问题导致Blend中出现了很多异常,但这似乎是另一个问题。