34

我在 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-namespace:Kavand.UI.Properties}Settings'。' 行号“6”和行位置“14”。

4

4 回答 4

53

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

于 2011-05-28T08:21:08.340 回答
49

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

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

有了这个:

xmlns:properties="clr-namespace:Kavand.UI.Properties;assembly=Kavand.UI"
于 2013-04-29T13:57:38.333 回答
4

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

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

public所以就我而言,我可以通过在类定义之前编写来解决这个问题。

于 2018-04-25T12:22:08.477 回答
2

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

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

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

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

  • 建造

  • 问题依旧!

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

于 2020-02-17T19:46:22.300 回答