名称空间中不存在wpf资源字典?

时间:2015-11-02 12:34:23

标签: c# .net wpf xaml

我正在使用.net 4.5.2 我不清楚为什么我的项目继续说资源缺失。我在一个文件夹中调整了我的mainWindow.xaml并重新安装了应用程序以定位它的位置。真正奇怪的是它在visual studio中正确显示,但是当我尝试编译它时,错误地说项目中不存在'themes'命名空间。

enter image description here

  

严重级代码说明项目文件行错误CS0234类型或   名称空间名称“主题”在名称空间中不存在   'WpfApplication1'(你错过了一个程序集吗?   参考?)WpfApplication1 C:\ Users \ jmartini \ Projects \ wpf_Styling_4.5.2 \ WpfApplication1 \ WpfApplication1 \ obj \ Debug \ View \ MainWindow.g.i.cs 33

这是我的代码......

MainWindow.xaml

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication1"
        mc:Ignorable="d"
        Title="MainWindow" Height="200" Width="250"
        WindowStartupLocation="CenterScreen">
    <DockPanel>
        <Button Content="Push It!" Width="70" VerticalAlignment="Center" HorizontalAlignment="Center"/>
    </DockPanel>
</Window>

JMStyles.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:WpfApplication1.Themes">

    <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Red" />
        <Setter Property="Foreground" Value="White" />
        <Setter Property="FontSize" Value="15" />
        <Setter Property="SnapsToDevicePixels" Value="True" />
    </Style>

</ResourceDictionary>

的App.xaml

<Application x:Class="WpfApplication1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApplication1"
             StartupUri="View/MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Themes/JMStyles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

使其正常运行的解决方案...... 我从样式页面中删除了这一行:

xmlns:local="clr-namespace:WpfApplication1.Themes"

原始

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Style TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Red" />
        <Setter Property="Foreground" Value="White" />
        <Setter Property="FontSize" Value="15" />
        <Setter Property="SnapsToDevicePixels" Value="True" />
    </Style>

</ResourceDictionary>

3 个答案:

答案 0 :(得分:0)

Microsoft.Windows.Themes可在主题特定的PresentationFramework程序集中找到。您需要根据XAML中引用的引用添加对以下某个引用:

PresentationFramework.Aero.dll
PresentationFramework.AeroLite.dll
PresentationFramework.Classic.dll
PresentationFramework.Luna.dll
PresentationFramework.Royale.dll

答案 1 :(得分:0)

我删除了这行代码

print u'\xd6'

来自下面的样式页面文件内容......

xmlns:local="clr-namespace:WpfApplication1.Themes"

答案 2 :(得分:0)

由于某些原因,Visual Studio无法识别仅包含资源字典文件的文件夹的命名空间。如果在该文件夹中添加另一个文件(例如用户控件),则会注意到名称空间将被识别。解决方案是删除 “本地”名称空间:

xmlns:local="clr-namespace:WpfApplication1.Themes

因为我们将用

提及资源
<ResourceDictionary Source="Themes/...

不需要名称空间,不同之处在于,在创建用户控件时,确实需要在使用它们的文件代码中添加名称空间