错误:“无法创建未知类型 'clr-namespace:NameSpace.PropertiesSettings'。”

Posted

技术标签:

【中文标题】错误:“无法创建未知类型 \'clr-namespace:NameSpace.PropertiesSettings\'。”【英文标题】:Error: 'Cannot create unknown type 'clr-namespace:NameSpace.PropertiesSettings'.'错误:“无法创建未知类型 'clr-namespace:NameSpace.PropertiesSettings'。” 【发布时间】:2011-09-03 15:28:15 【问题描述】:

我在 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'。

【问题讨论】:

是编译错误还是运行时错误?删除前三个 setter 是否允许应用程序运行? 这是一个运行时错误,不,当我删除包含定义的部分时,应用程序将被编译 【参考方案1】:

作为其他答案和 cmets 的变体,这对我有用:

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

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

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

构建

问题依旧!

对我来说似乎是一个 VS 错误。

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

谢谢!这是我遇到的问题,导致我提出这个问题。我的课是“内部的”。将其更改为“公共”解决了我的问题。 +1【参考方案3】:

将“构建操作”属性保留为“资源”,然后更改此行:

xmlns:properties="clr-namespace:Kavand.UI.Properties"

用这个:

xmlns:properties="clr-namespace:Kavand.UI.Properties;assembly=Kavand.UI"

【讨论】:

我将构建操作设置回 Resource,即使没有更改命名空间,它也能正常工作。啊啊!这个问题太变态了。 Visual Studio 怎么了? 有谁知道什么时候使用Resource,什么时候使用Page?在其他一些文章中,建议使用 Resource 来解决用户控件库的其他神秘行为。【参考方案4】:

我已将文件的“构建操作”属性设置为“资源”。当我将其更改为“Page”时,问题就解决了。

【讨论】:

哇?这对我也有用。但是文档明确指出要确保您的资源字典具有“资源”构建操作。

以上是关于错误:“无法创建未知类型 'clr-namespace:NameSpace.PropertiesSettings'。”的主要内容,如果未能解决你的问题,请参考以下文章

Informix 错误:发生了语法错误。错误代码:-201

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

错误精灵错误跟踪器错误

网页打开显示错误500是啥意思

PHP错误处理

PHP的错误处理