我在 NavigationWindow 中有一个由 Pages 组成的WPF应用程序。在App.Xaml中,我创建了所有页面,以便在使用导航命令时可以引用它们。它有点像这样:
<Application ...>
<Application.Resources>
<FirstPage x:Key="first"/>
<SecondPage x:Key="second"/>
</Application.Resources>
</Application>
当FirstPage引用“second”或反之亦然时,会发生“循环”引用(无法弄清楚还有什么可以称之为此)。在这个例子中,我们只是说第一页引用“第二”。
<FirstPage ...>
...
<Button
CommandParameter="{StaticResource second}"
</Button>
</FirstPage>
(在您开始回答之前,我将按顺序将FirstPage和SecondPage添加到应用程序资源中!)
这种情况会导致一些奇怪的,无用的错误。首先,在App.xaml中,我收到错误
无法创建类型的实例 第一页
所以我转到FirstPage并尝试将其加载到设计器中。在xaml中,我引用“ second ”的行会突出显示,并显示此非常有用的错误消息:
应用程序XAML无法加载。 修复应用程序XAML中的错误 在尝试加载其他XAML之前 文件
首先是鸡肉还是鸡蛋? App.xaml无法加载,因为它无法创建FirstPage,我无法修复FirstPage,因为它实际上是app.xaml问题。
我试图解决这个问题:
1)我尝试更改添加到 Application.Resources 的项目顺序。我想如果FirstPage需要获取SecondPage,则必须在FirstPage出现之前添加SecondPage并使其可用。这不起作用。
2)我尝试使用 DynamicResource 而不是 StaticResource 。没有帮助。
3)我尝试在代码中添加Page实例。这有效,但并不令人满意。
注意,应用程序编译并运行正常;问题是为什么这会在设计时破裂。
我该怎么做才能解决这个问题?我需要在整个地方访问我的页面以用作导航参数,这就是我将它们放在应用程序资源中的原因。还有另一种方法吗?如果我可以提供帮助,我只想在我的应用程序中使用每个页面的单个实例。
答案 0 :(得分:1)
您可以使用资源名称作为参数而不是资源本身。然后你的命令可以为你查找实际的资源。