2009-06-21 44 views
2

我有一个WPF应用程序,它由NavigationWindow。在App.Xaml中,我创建了所有的页面,以便在使用导航命令时可以引用它们。它会有点像这样:导致问题的循环资源引用?

<Application ...> 
<Application.Resources> 
    <FirstPage x:Key="first"/> 
    <SecondPage x:Key="second"/> 
</Application.Resources> 
</Application> 

“通知”引用(想不出还有什么叫这个)​​发生在第一页引用“第二”或反之亦然。在这个例子中,我们只说首页参考“第二”。

<FirstPage ...> 
    ... 
    <Button 
    CommandParameter="{StaticResource second}" 
    </Button> 
</FirstPage> 

你开始回答之前,我会得到在第一页和SecondPage被添加到应用程序资源在某一时刻的顺序!

这种情况导致一些奇怪的,没用的错误。首先,在App.xaml中,我得到的错误

无法创建类型 第一页

所以我翻转到第一页的实例,并尝试加载它的设计师。在XAML,其中我参考“第二”被加亮并显示此非常有用的错误消息的行:

应用XAML加载失败。在应用程序中XAML 修正错误试图加载其他XAML文件

,这是先有鸡还是先有蛋之前? App.xaml无法加载,因为它无法创建FirstPage,而且我无法修复FirstPage,因为它实际上是app.xaml,这就是问题所在。

事情我曾试图解决这个问题:
1)我试图改变加入到Application.Resources项目的顺序。我认为如果FirstPage需要获得SecondPage,那么必须在FirstPage出现之前添加SecondPage并且可用。这不起作用。
2)我尝试使用DynamicResource而不是StaticResource。没有帮助。
3)我试着在代码中添加Page实例。这有效,但不令人满意。

注意,应用程序编译并运行良好;问题是为什么这会在设计时打破。


我该怎么做才能解决这个问题?我需要访问我的页面作为导航参数,这就是为什么我把它们放在应用程序资源中的原因。有没有其他方法可以做到这一点?如果我可以提供帮助,我只需要在我的应用程序中使用每个页面的单个实例。

+0

无论何时你看到那些无用的异常,通常真正的错误在Exception.InnerException属性 – Nir 2009-06-22 08:39:20

+0

毫无疑问。问题是,应用程序运行得很好,所以我无法探测异常的深度以找出真正的原因。 – Will 2009-06-22 11:36:58

回答

1

您可以使用资源名称作为参数,而不是资源本身。然后你的命令可以为你查找实际的资源。