麻中的样式"Cannot find resource 'MetroCheckBox'"



我开始在WPF中使用样式。我正在使用MahApps风格作为基础,到目前为止,这真的很好。我已经能够使用BasedOn属性进行特定的修改。

其中一个更简单的更改是添加默认边距,这样在添加控件时它们就不会接触。到目前为止,它运行得非常好,直到我尝试使用MetroCheckBox。有了这个特定的控件,它抛出一个xaml解析异常:"找不到名为‘MetroCheckBox’的资源。资源名称区分大小写。"

我查看了源代码,试图找出这个问题,并直接从GitHub:中复制了这个名称

https://github.com/MahApps/MahApps.Metro/blob/master/MahApps.Metro/Styles/Controls.CheckBox.xaml

毫无疑问,我所有的其他控制都很好:

        <Style TargetType="{x:Type Button}" BasedOn="{StaticResource MetroButton}">
            <Setter Property="Margin" Value="2"/>
        </Style>
        <Style TargetType="{x:Type ComboBox}" BasedOn="{StaticResource MetroComboBox}">
            <Setter Property="Margin" Value="2"/>
        </Style>
        <Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource MetroCheckBox}">
            <Setter Property="Margin" Value="2"/>
        </Style>
        <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource MetroTextBox}">
            <Setter Property="Margin" Value="2"/>
        </Style>

关于如何解决这个问题有什么想法吗?

注意,我包括了这样的风格参考:

<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:extra="http://schemas.extra.com/ui"
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:visualizationToolkit="clr-namespace:System.Windows.Controls.DataVisualization;assembly=System.Windows.Controls.DataVisualization.Toolkit"
xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit"
xmlns:Primitives="clr-namespace:System.Windows.Controls.DataVisualization.Charting.Primitives;assembly=System.Windows.Controls.DataVisualization.Toolkit"
xmlns:Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
xmlns:Custom="http://metro.mahapps.com/winfx/xaml/controls"
x:Class="MyApp.App"
StartupUri="/MyApp;component/GUI/Window/Window3.xaml"
>
<Application.Resources>       
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
        </ResourceDictionary.MergedDictionaries>
        <Style TargetType="{x:Type Button}" BasedOn="{StaticResource MetroButton}">
            <Setter Property="Margin" Value="2"/>
        </Style>
        <Style TargetType="{x:Type ComboBox}" BasedOn="{StaticResource MetroComboBox}">
            <Setter Property="Margin" Value="2"/>
        </Style>
        <!--<Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource MetroCheckBox}">
            <Setter Property="Margin" Value="2"/>
        </Style>-->
        <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource MetroTextBox}">
            <Setter Property="Margin" Value="2"/>
        </Style>
        <!--Chart Style-->
        <Style TargetType="{x:Type chartingToolkit:Chart}
    ...
        </Style>
        <!--Top Tab Item-->
        <Style x:Key="TopTabItemStyle" TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
            ...
        </Style>
        <!--Tab Item-->
        <Style TargetType="{x:Type TabItem}" BasedOn="{StaticResource MetroTabItem}">
    ...
        </Style>
        <!-- Group Box-->
        <Style TargetType="{x:Type GroupBox}" BasedOn="{StaticResource MetroGroupBox}">
            <!--<Setter Property="Margin" Value="5"/>
            <Setter Property="Padding" Value="5"/>
            <Setter Property="Foreground" Value="{DynamicResource BlackBrush}"/>
            <Setter Property="Background" Value="{DynamicResource AccentColorBrush}"/>
            <Setter Property="BorderBrush" Value="{DynamicResource AccentColorBrush}"/>
            <Setter Property="Custom:ControlsHelper.HeaderFontSize" Value="{DynamicResource ContentFontSize}"/>
            <Setter Property="Custom:GroupBoxHelper.HeaderForeground" Value="{x:Null}"/>-->
            <Setter Property="Custom:ControlsHelper.HeaderFontWeight" Value="SemiBold"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type GroupBox}">
                        <Grid x:Name="GroupBoxRoot">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="*"/>
                            </Grid.RowDefinitions>
                            <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,0,0,2" Background="Transparent" Grid.Row="0">
                                <ContentPresenter ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentSource="Header" TextElement.FontWeight="{TemplateBinding Custom:ControlsHelper.HeaderFontWeight}" TextElement.FontStretch="{TemplateBinding Custom:ControlsHelper.HeaderFontStretch}" TextElement.FontSize="{TemplateBinding Custom:ControlsHelper.HeaderFontSize}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True"/>
                            </Border>
                            <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0" Background="Transparent" Grid.Row="1">
                                <ContentPresenter Cursor="{TemplateBinding Cursor}" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Margin="{TemplateBinding Padding}"/>
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>
</Application.Resources>

您缺少引入MahApps样式所需的ResourceDictionary。您可以将ResourceDictionary定义包含在撰写视图的XAML文件的XAML中,也可以将其添加到APP.XAML文件中,后者将在短期内为您提供更好的性能。

例如:这是其他MahApps资源字典中包含的MahApps控件xaml,在这种情况下,控件xaml就是您需要的:

<Application x:Class="MyApp"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>       
    </Application.Resources>
</Application>

我今天运行了它,它运行良好:

        <Style TargetType="{x:Type ComboBox}" BasedOn="{StaticResource MetroComboBox}">
            <Setter Property="Margin" Value="2"/>
        </Style>

据我所知,我没有改变任何与项目或参考资料有关的内容。

然而,在过去的几天里,Visual Studio以某种方式损坏了,设计器从左到右和从中抛出异常,解决方案资源管理器无法显示任何内容(在清除组件模型缓存后修复),NuGet无法为我检查MahApps版本。

所以我把安装程序设置为修复安装,现在样式很好。

我不知道这些是否有关联。。。但它们可能是,所以我将把这个作为一个答案,以防其他人遇到同样的问题。

如果您从2.0之前的MahApps版本升级到更新的版本,可能会导致此问题。

有关更多详细信息,请参阅:mahapps.com:迁移到v2.0-mahapps.Metrohttps://mahapps.com/docs/guides/migration-to-v2.0

相关内容

  • 没有找到相关文章

最新更新