在设计时未找到C#资源

时间:2017-06-06 07:46:41

标签: c# wpf xaml mahapps.metro

由于几天后我打开任何xaml文件时收到“未找到资源”消息,因此编译和执行应用程序没有问题。我正在使用MahApps.Metro进行UI设计,并已尝试清理和重建整个解决方案,并使用Visual Studio Blend 2015“重新安装”MahApps.Metro(版本1.4.3)包。

我的App.xaml看起来像这样:(定义了更多样式,但WindowStyle显示“无法解析资源”错误)

<Application x:Class="Edge_Player.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:Edge_Player"
         xmlns:metro="http://metro.mahapps.com/winfx/xaml/controls"
         xmlns:system="clr-namespace:System;assembly=mscorlib"
         StartupUri="Player.xaml">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Theme/Dark.xaml"/>
            <ResourceDictionary Source="Localization/StringResources.xaml"/>
            <ResourceDictionary Source="Resources/Icons/Icons.xaml"/>

            <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/FlatButton.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/FlatSlider.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />

            <ResourceDictionary Source="Theme/Base/Dark.xaml"/>
            <ResourceDictionary Source="Theme/Accents/Orange.xaml"/>
            <ResourceDictionary Source="Controls/Slider.xaml"/>
            <ResourceDictionary Source="Controls/Menu.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        <system:Double x:Key="WindowTitleFontSize">14</system:Double>

        <BitmapImage x:Key="DesignCover" UriSource="Resources/emptyCover.png"/>
        <BitmapImage x:Key="DesignImage" UriSource="Resources/osu_mp_wallpaper.jpg"/>

        <Style x:Key="WindowStyle" 
           TargetType="{x:Type metro:MetroWindow}" 
           BasedOn="{StaticResource {x:Type metro:MetroWindow}}">
            <Setter Property="Background" Value="{DynamicResource Primary}"/>
            <Setter Property="Foreground" Value="{DynamicResource Accent}"/>
            <Setter Property="BorderBrush" Value="{DynamicResource Border}"/>
            <Setter Property="GlowBrush" Value="{DynamicResource Border}"/>
            <Setter Property="NonActiveBorderBrush" Value="{DynamicResource Warn}"/>
            <Setter Property="NonActiveGlowBrush" Value="{DynamicResource Warn}"/>
            <Setter Property="NonActiveWindowTitleBrush" Value="{DynamicResource PrimaryDark}"/>
            <Setter Property="WindowTitleBrush" Value="{DynamicResource PrimaryDark}"/>
            <Setter Property="ShowIconOnTitleBar" Value="False"/>
        </Style>

“WindowStyle”中使用的所有DynamicResource都是在一个单独的文件中定义的。

3 个答案:

答案 0 :(得分:3)

我刚刚发现是什么导致了这种情况发生:在XAML编辑器中,项目代码已经被停用了某种程度......(我现在觉得很愚蠢)

答案 1 :(得分:1)

几个小时后,我发现问题是平台目标设置为x64。

将其更改为AnyCPU后,设计中的资源即可工作。

答案 2 :(得分:0)

我遇到了类似的问题,但是,我的项目处于活动状态,并且采用了其他解决方案。问题是向现有项目添加新资源。先前存在的资源可以在设计和运行时使用,但只能在新资源文件的运行时使用。

解决方案很简单。我删除了.sou文件或.vs文件夹(取决于版本),并且所有资源都在设计时起作用。

.sou或.vs是当今世界上万恶之源,当他们犯错时。删除它们可以解决许多问题。我应该先尝试这个。