Set属性System.Windows.FrameworkElement.Style引发了异常

时间:2014-11-21 07:51:34

标签: c# wpf

原谅我,我只是WPF中的新手。

当我尝试在WPF中调试我的小VS2012应用程序时出现异常,请查看下面的屏幕截图。我试图找出究竟是什么例外。但没有找到一种方法来获取更多详细信息的异常。因为代码似乎在XAML的第一行中断了。

enter image description here enter image description here

我认为这可能是由我的Style DataGridDemoStyle中的错误代码引起的。但我不知道什么代码导致错误。有没有办法查看错误InnerException之类的详细信息?

感谢。

更新

我逐行检查样式代码后。

我发现一个名为DataGridDemoRowStyle的样式导致错误。我不知道为什么这种样式会导致错误。因为如果我删除它。错误将消失。请在下面查看。

<Style x:Key="DataGridDemoStyle"  TargetType="{x:Type DataGrid}">
        <!--<Setter Property="AlternatingRowBackground" Value="{StaticResource RowBackgroundAlternateBrush}" />-->
        <!--<Setter Property="BorderBrush" Value="#FF688CAF"/>-->
        <!--<Setter Property="Background" Value="{DynamicResource bearBrush}" />-->
        <!--<Setter Property="ColumnHeaderHeight" Value="50" />-->
        <!--<Setter Property="HeadersVisibility" Value="All" />-->
        <!--<Setter Property="RowBackground" Value="{StaticResource RowBackgroundBrush}" />-->
        <!--<Setter Property="AlternationCount" Value="4" />-->
        <Setter Property="RowStyle" Value="{StaticResource DataGridDemoRowStyle}" />

        <!--<Setter Property="RowHeaderWidth" Value="50" />-->
        <Setter Property="RowHeight" Value="22" />
        <Setter Property="HorizontalGridLinesBrush" Value="{StaticResource DataGridHorizontalLinesBrush}" />
        <Setter Property="CellStyle" Value="{StaticResource DataGridCellStyle}" /><!---->

        <Setter Property="ColumnHeaderStyle" Value="{StaticResource DatagridColumnHeaderCustomTemplateStyle}" />
    </Style>
    <!--I don't know why below style will cause the error. If I remove it . the error will gone.-->
    <Style x:Key="DataGridDemoRowStyle" TargetType="{x:Type DataGridRow}">
        <Style.Triggers>
            <Trigger Property="AlternationIndex" Value="2" >
                <Setter Property="Background" Value="{StaticResource RowBackgroundAlternationIndex2Brush}" />
            </Trigger>
            <Trigger Property="AlternationIndex" Value="3">
                <Setter Property="Background" Value="{StaticResource RowBackgroundAlternationIndex3Brush}" />
            </Trigger>
        </Style.Triggers>
    </Style>

DataGridDemoRowStyle风格有问题吗?感谢。

1 个答案:

答案 0 :(得分:2)

我找到了原因。

如果我在主样式DataGridDemoStyle之后放置子样式。 WPF将无法找到并加载它们。所以我必须在DataGridDemoStyle之前放置所有的依赖风格。

正确的方式:

<Style x:Key="substyle1" >..</Style>
<Style x:Key="substyle2" >..</Style>
..
<Style x:Key="substylen" >..</Style>
<Style x:Key="mainstyle" >
   ...
   <Setter Property="xxx" Value="{StaticResource substylen}" />
</style>

PS:XAML似乎逐行合规。在指定的代码编译行之前,应该准备好一切依赖。我不知道它是否正确。请帮忙复习。

感谢。