我定制了一个
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>
也有同样的问题,抛出相同的异常。
它在我的地方工作正常...我猜你在获取“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 类是否有错误。如果您仍然遇到问题,请告诉我。
问题出在自动生成的资源文件本身内,它以某种方式损坏了。删除它并重新生成一个新的解决了问题。
我已经多次遇到同样的问题了。
“找不到名为 '' 的资源。资源名称区分大小写”。
在我的例子中,样式资源在 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>
我不知道为什么,但它有效。