如何在应用程序启动时调试DynamicObject异常

时间:2013-07-17 06:41:21

标签: c# wpf xaml

在调试时检查公共语言运行时异常,引发了一系列三个异常。

消息(为所有人)说:

  

属性路径无效。 'System.Dynamic.DynamicObject +亚动态'   没有名为'Items'的公共属性。

我试图找到一个Items属性但没有成功,但事实是我从未使用过DynamicObject,而且我无法找到需要干预的地方。

异常堆栈中的任何其他信息对于人类开发人员来说完全不可理解。

我很确定我的代码中唯一的“动态”是我的XAML中的DynamicResource,也许这就是起点。

更新

这是我将DynamicResource设置为属性值和使用示例的样式之一。

<Style x:Key="NoChromeButton" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Transparent" />
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
        <Setter Property="HorizontalContentAlignment" Value="Center"/>
        <Setter Property="VerticalContentAlignment" Value="Center"/>
        <Setter Property="Padding" Value="1"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid x:Name="Chrome" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
                        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" Value="#ADADAD"/>
                            <Setter Property="Opacity" TargetName="Chrome" Value="0.5"/>
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter Property="BorderBrush" Value="BlueViolet"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

然后用作简单的Button样式:

<Button Grid.Column="3" Margin="5" Style="{DynamicResource NoChromeButton}"  Width="24" Height="24" Click="ShutDown" IsEnabled="False" />

更新2:

输出消息说明了其中一个明显相同的异常:

  

无法从'SelectedObject'获取'Name'值(类型'Object')(类型   '配置器')。 BindingExpression:路径= SelectedObject.Name;   DataItem ='PropertyGrid'(Name ='PropertyGridTab');目标元素是   'PropertyGrid'(Name ='PropertyGridTab');目标属性是   'SelectedObjectName'(类型'String')   InvalidOperationException:'System.InvalidOperationException:Property   路径无效。 'System.Dynamic.DynamicObject + MetaDynamic'没有   有一个名为'Items'的公共财产。

更新3:

我发现其中一个异常与绑定到自定义View Model的Xceed Property Grid SelectedObject有关。它运作完美,但它提出了上述“警告”。我认为这是Xceed问题小组的问题。

0 个答案:

没有答案