2

我确信这是一个微不足道的问题,但这是我似乎无法解决的问题之一。

我将 App.xaml 中的启动文件从StartupUri="MainWindow.xaml"下面的代码更改为我需要做的所有事情。

<Application x:Class="MVVMPrototype.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         StartupUri="MVVMPrototype.View.MVVMPrototype.xaml">
<Application.Resources>

</Application.Resources>

但是,然后我收到以下错误,指出我需要将构建属性设置为资源,如下所示。以前它设置为 Page,这与 MainWindow.xaml 的设置相同。

资源

这样做之后,我会遇到一个编译器错误,指出InitializeComponent();当前上下文中不存在。我唯一知道会发生这种情况的是类/命名空间在 .cs 文件和 .xaml 文件之间不同步时,但事实并非如此。

我查看了StartupUri 文档,但我发现它没有那么有用。我确信这是我忽略的一些愚蠢的事情。是的,我已经多次清理并构建了该项目,但都没有运气。有谁知道如何解决它?

更新: Seva Titov 已经解决了第一部分。但现在我有TargetInvocationException一个内部例外,System.Security.SecurityException如下图(如果太难阅读,请在新选项卡中打开图像):

安全异常

有什么想法吗?

4

3 回答 3

4

StartupUri 指定相对文件位置,并且您似乎在文件夹 View 中有一个文件 MVVMPrototype.xaml,因此您的代码应如下所示:

<Application x:Class="MVVMPrototype.App" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     StartupUri="View/MVVMPrototype.xaml">
于 2012-08-06T18:37:32.457 回答
3

好的,我现在已经弄清楚发生了什么。

正如 Seva Titov 在回答中指出的那样, StartupUri 的值应该是"View/MVVMPrototype.xaml".

InitializeComponent();声明它未在当前上下文中定义的错误是因为对MVVMPrototype.xaml 的属性的构建操作设置为 resource,而不是 page。最初我认为添加一个新的 Window 控件可以解决这个问题,但事实证明这是一个红鲱鱼,因为构建操作被设置为新控件上的页面 - 我认为这是默认设置。

通过切换 Project Properties -> Security 下的“Enable ClickOnce security settings”来生成app.manifest ,我修复了最后一个错误TargetInvocationException和内部异常。System.Security.SecurityException

这给了我最后一个错误,它无法找到清单签名证书,所以我只是取消选中项目属性 -> 签名下的“签署 ClickOnce 清单”。

这解决了我的问题。希望它可以帮助别人。请注意,我对部署/发布知之甚少(如果有的话),我不确定最后两个将如何影响这一点。

于 2012-08-07T11:24:45.033 回答
0

在 App.xaml 中

StartupUri="/ProjectName;component/Folder or Path/File or Page.xaml">

于 2021-04-03T19:02:02.703 回答