XamlParseException :: 找不到名为“DefaultStyle”的资源

问题描述 投票:0回答:3

我定制了一个

togglebutton
以在控制箱中使用。但当我将鼠标悬停在它上面时,它抛出了这个异常:

System.Windows.Markup.XamlParseException:“为‘System.Windows.Markup.StaticResourceHolder’提供值引发了异常。”

内部异常:

'找不到名为“DefaultStyle”的资源。资源名称区分大小写。

这有点奇怪,因为在我的整个项目中没有任何内容被命名或使用名称

DefaultStyle

经过一番挖掘,我注意到错误出现了延迟,所以我记得这次我添加了一个

tooltip
,这似乎是导致问题的原因,但我不知道为什么!

这是 XAML:

<Style x:Key="ToggleClose" TargetType="{x:Type ToggleButton}">
    <Setter Property="Background" Value="Transparent" />
    <Setter Property="SnapsToDevicePixels" Value="True" />

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ToggleButton}">
                <Grid x:Name="_Container" Background="#00000000">
                    <ContentPresenter x:Name="MyContentPresenter" Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" />
                    <Path x:Name="_Icon" SnapsToDevicePixels="True" ToolTip="Close window" Width="18" Height="18" Margin="0" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Fill" Stroke="#4D4D4D" StrokeThickness="1" Data="M0,0 L1,1 M0,1 L1,0" />
                </Grid>

                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="_Container" Property="Background" Value="#80FF0000" />
                        <Setter TargetName="_Icon" Property="Stroke" Value="#2D2D2D" />
                    </Trigger>

                    <Trigger Property="IsChecked" Value="True">
                        <Setter Property="local:WindowBehaviours.Close" Value="True" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

编辑:

好吧,似乎任何

tooltip
都会引发异常,而不仅仅是
togglebutton
,即使是非常不寻常的
UI Debugging Tools for XAML

编辑2:

这些是我正在使用的资源

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resources/Objects/Customviewer.xaml"/>
            <ResourceDictionary Source="Resources/Objects/CustomScroller.xaml"/>
            <ResourceDictionary Source="Resources/Objects/CustomButtons.xaml"/>
            <ResourceDictionary Source="Resources/Rooks/Alising.xaml"/>
            <ResourceDictionary Source="Resources/Themes/VisualOne.xaml"/>
            <ResourceDictionary Source="Resources/Themes/VisualDark.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

编辑3:

<Popup>
也有同样的问题,抛出相同的异常。

wpf user-controls
3个回答
0
投票

它在我的地方工作正常...我猜你在获取“DefaultStyle”时丢失了一些东西。

XAML-

<UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="../Style/Styles.xaml"/>
                <ResourceDictionary x:Name="DefaultStyle" 
                 Source="Dictionary1.xaml">               
                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources> 

您提到的所有 XAML 代码都在我的“Dictionary1.xaml”中 然后我用它...

  <ToggleButton Name="CloseButton" Style="{StaticResource ToggleClose}" Grid.Row="1" Grid.Column="1"  />

还要检查您的 Dictionary 和 WindowBehaviours 类是否有错误。如果您仍然遇到问题,请告诉我。


0
投票

问题出在自动生成的资源文件本身内,它以某种方式损坏了。删除它并重新生成一个新的解决了问题。


0
投票

我已经多次遇到同样的问题了。

“找不到名为 '' 的资源。资源名称区分大小写”。

在我的例子中,样式资源在 app.xaml 中定义。

<Application.Resources>
<Style TargetType="{x:Type TextBlock}" x:Key="HeaderStyle">
    <Setter Property="FontSize" Value="24"/>
    <Setter Property="FontWeight" Value="Bold"/>
    <Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
</Application.Resources>

添加(随机)第二种样式后,问题就消失了。

<Application.Resources>
<Style TargetType="{x:Type TextBlock}" x:Key="HeaderStyle">
    <Setter Property="FontSize" Value="24"/>
    <Setter Property="FontWeight" Value="Bold"/>
    <Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
<Style TargetType="{x:Type TextBlock}" x:Key="CentralText">
    <Setter Property="HorizontalAlignment" Value="Center"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="FontSize" Value="24"/>
</Style>
</Application.Resources>

我不知道为什么,但它有效。

© www.soinside.com 2019 - 2024. All rights reserved.