第二次导航导致“在合并资源字典中检测到循环”异常

时间:2013-12-28 16:55:12

标签: xaml windows-phone-8

我在Windows手机应用程序中使用Merge Dictionaries遇到了一个非常奇怪的问题。我从主页导航到辅助页面(第1页),点击一个非常简单的按钮

        private void Button_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Uri("/Page1.xaml", UriKind.Relative));
    }

第一次导航是正确的。第二次(再次单击并单击按钮)给出了一个错误“在合并的资源字典中检测到的循环”。我创建了一个非常简单的页面,只需添加MergedDictionary + resourcedictionary即可减少问题。我的Page1.xaml如下:

<phone:PhoneApplicationPage.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Skins\Page1Skin.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</phone:PhoneApplicationPage.Resources>

2 个答案:

答案 0 :(得分:1)

对于necroposting很抱歉,但这个主题只是整个网络搜索中的一个,在WP8.0(Silverlight)上讨论这个问题。

上面的解决方案对我没有帮助,所以我找到了另一个:

<phone:PhoneApplicationPage.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/MyProject.WP;component/Styles/MyPageStyles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</phone:PhoneApplicationPage.Resources>

其中:

  1. “MyProject.WP” - 我的主要项目。这是解决方案中的名称。
  2. “样式” - 解决方案中的文件夹。
  3. “; component” - 用于在Assemblies上引用的关键字。
  4. 在这种情况下,您也可以从其他项目中选择样式,只需要在源代码中更改项目名称。

答案 1 :(得分:0)

找到它。我的XAML中有一个小错误。 ResourceDictionary路径中的反斜杠必须是正斜杠。

    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Skins\Page1Skin.xaml"/>
    </ResourceDictionary.MergedDictionaries>

更换它解决了我的问题。不知道为什么手机因此错误而失败!