【问题标题】:Navigating second time causes "cycle detected in merged resource dictionaries" exception第二次导航导致“在合并的资源字典中检测到循环”异常
【发布时间】:2013-12-28 16:55:12
【问题描述】:

我在我的 Windows Phone 应用程序中使用合并字典时遇到了一个非常奇怪的问题。我从我的 MainPage 导航到辅助页面 (page1),只需单击一个非常简单的按钮

        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>

【问题讨论】:

    标签: xaml windows-phone-8


    【解决方案1】:

    抱歉发帖了,但是这个话题只是整个网络搜索中的一个,它在 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" - 用于在组件上引用的关键字。

    在这种情况下你也可以从其他项目中选择样式,只需要在Source中更改项目名称。

    【讨论】:

      【解决方案2】:

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

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

      更换它解决了我的问题。不知道为什么手机会出现此错误!

      【讨论】:

        猜你喜欢
        • 2023-03-31
        • 2014-03-23
        • 2013-02-02
        • 2021-12-27
        • 1970-01-01
        • 2011-02-07
        • 1970-01-01
        • 2021-07-18
        • 1970-01-01
        相关资源
        最近更新 更多