错误:'无法创建未知类型'{clr-namespace:NameSpace.Properties}设置'。'

时间:2011-05-27 19:17:38

标签: wpf xaml styles application-settings wpf-style

我在ResourceDictionary中定义我的设置和样式:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:properties="clr-namespace:Kavand.UI.Properties">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary>
            <properties:Settings x:Key="settings" />
        </ResourceDictionary>
    </ResourceDictionary.MergedDictionaries>
    <Style x:Key="PopupMenu_StackPanel">
        <Setter Property="TextBlock.FontSize" Value="{Binding Source={StaticResource settings}, Path=Default.Font_Menu_Size}" />
        <Setter Property="TextBlock.FontFamily" Value="{Binding Source={StaticResource settings}, Path=Default.Font_Menu_Family}" />
        <Setter Property="TextBlock.FontWeight" Value="{Binding Source={StaticResource settings}, Path=Default.Font_Menu_Weight}" />
        <Style.Resources>
            <Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource KavandMenuItem}">
                <Style.Triggers>
                    <Trigger Property="IsChecked" Value="true">
                        <Setter Property="IsEnabled" Value="false" />
                    </Trigger>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="IsChecked" Value="True" />
                            <Condition Property="IsHighlighted" Value="True" />
                        </MultiTrigger.Conditions>
                        <Setter Property="Foreground" Value="{DynamicResource K_Brush_Gray}" />
                    </MultiTrigger>
                </Style.Triggers>
            </Style>
        </Style.Resources>
    </Style>
</ResourceDictionary>

当我运行我的应用程序时,我收到错误:

  

'无法创建未知类型   '{CLR-名称空间:Kavand.UI.Properties}设置'“。   行号'6'和行位置   '14'。

4 个答案:

答案 0 :(得分:47)

我已将文件的“Build Action”属性设置为“Resource”。当我将其更改为“Page”时,问题就解决了。

答案 1 :(得分:42)

将“Build Action”属性保存到“Resource”,只需更改此行:  的的xmlns:属性= “CLR-名称空间:Kavand.UI.Properties” 有了这个:  的的xmlns:属性= “CLR-名称空间:Kavand.UI.Properties;装配= Kavand.UI”

答案 2 :(得分:1)

刚发布另一个可能的解决方案,因为我最近偶然发现了这个异常。

可能是您引用的class-cefinition(在您的情况下为“Kavand.UI.Properties.Settings”)不使用“public”-access-modifier。

所以在我的情况下,我可以通过在课程定义之前写公开来解决这个问题。

答案 3 :(得分:0)

作为其他答案和评论的变体,它对我有用:

  • 将文件的“构建操作”属性设置为“页面”。

  • 构建(问题消失了-但是...:)

  • 将文件的“构建操作”属性设置为“资源”。

  • 构建

  • 问题依然存在!

对我来说似乎是VS错误。