繁体   English   中英

编辑视图时,Microsoft Visual Studio XAML UI设计器FileNotFoundException

[英]Microsoft Visual Studio XAML UI Designer FileNotFoundException when Editing View

我在Visual Studio 2012上将WPF与.NET 4.5.2结合使用,并在编辑视图时在XAML视图中获取FileNotFoundException:

在此处输入图片说明

该应用程序将编译并正常运行。 异常仅显示为蓝色下划线。

我调试了XDesProc.exe,发现它是异常的来源。 原因是它的工作目录是C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE所以它在错误的位置查找配置。

在我看来,这可能是应用程序中的设计问题。 在此行的MainWindowViewModel.cs中引发了异常:

RemotingConfiguration.Configure("ZZZZZ.exe.config", false);

我相信,当XAML UI设计器到达View.xaml的这一部分时,就会到达此行:

<Window.DataContext>
    <vm:MainWindowViewModel/>
</Window.DataContext>

我将在其中实例化ViewModel并将其分配给DataContext。

我想我需要将RemotingConfiguration.Configure()移到ViewModel构造函数之外,但我不知道将它放在哪里。 我相信这可以解决我的问题。

提前致谢!

在设计模式下,将实例化xaml中指定的控件和实例。 在您的VM(或其他区域)内,可能存在在设计模式下不应尝试的代码。

最好通过指定是否为设计模式(例如

if (!DesignerProperties.GetIsInDesignMode(this)) { ... } // if not in design mode.

由于VM是问题所在,因此以下是选项。

  • 在后面的代码中实例化VM,而在设计模式下,请勿使用上述逻辑检查实例化VM。
  • 如果出于宗教原因必须在xaml 上实例化 VM,请执行以下步骤。
    1. 通过在Xaml中的VM上添加Name属性,为Xaml中的VM Name
    2. 在名为IsInDesign的VM上创建一个布尔值(不必遵守INotifyPropertyChanged )。
    3. 在主页构造函数中,使用上述逻辑检查是否在设计模式下,然后将该值分配给VM的IsInDesign到命名的VM。
    4. 在VM的构造函数中(应在主页的构造函数之后实例化),检查IsInDesign的值,并根据其值停止文件的任何加载/读取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM