2

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

消息(对所有人)说:

属性路径无效。“System.Dynamic.DynamicObject+MetaDynamic”没有名为“Items”的公共属性。

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

人类开发人员完全无法理解异常堆栈中的任何其他信息。

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

更新:

这是我将 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”(输入“Configurator”)获取“Name”值(输入“Object”)。BindingExpression:Path=SelectedObject.Name; DataItem='PropertyGrid'(名称='PropertyGridTab');目标元素是'PropertyGrid'(名称='PropertyGridTab');目标属性是“SelectedObjectName”(类型“字符串”) InvalidOperationException:“System.InvalidOperationException:属性路径无效。“System.Dynamic.DynamicObject+MetaDynamic”没有名为“Items”的公共属性。

更新 3:

我发现其中一个异常与SelectedObject绑定到自定义视图模型的 Xceed 属性网格有关。它完美地工作,但它引发了上述“警告”。我认为这是 Xceed 问题团队的问题。

4

0 回答 0