XamlParseException ::找不到名为' DefaultStyle`的资源

时间:2017-06-13 16:12:26

标签: wpf user-controls

我已自定义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>在抛出相同的异常时也遇到了同样的问题。

2 个答案:

答案 0 :(得分:0)

它在我的地方工作得很好...我猜你在错过了什么&#39; DefaultStyle&#39;

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代码都在我的&#39; Dictionary1.xaml&#39; 然后我在...中使用它。

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

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

答案 1 :(得分:0)

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