2

デバッグ中に共通言語ランタイム例外をチェックすると、一連の 3 つの例外が発生します。

メッセージ(すべての場合)には次のように書かれています:

プロパティ パスが無効です。'System.Dynamic.DynamicObject+MetaDynamic' には、'Items' という名前のパブリック プロパティがありません。

プロパティを見つけようとしましたItemsが成功しませんでしたが、実際には aDynamicObjectを使用したことがなく、介入が必要な場所を見つけることができません。

例外スタック内のその他の情報は、人間の開発者にはまったく理解できません。

私のコードの唯一の「動的」はDynamicResource私のXAMLであり、おそらくそれが出発点であると確信しています。

アップデート:

プロパティのValueにDynamicResourceを設定したStylesの一つと使い方の例です。

<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 Grid.Column="3" Margin="5" Style="{DynamicResource NoChromeButton}"  Width="24" Height="24" Click="ShutDown" IsEnabled="False" />

更新 2:

出力メッセージは、これらの明らかに同等の例外の 1 つについて述べています。

'SelectedObject' (タイプ 'Configurator') から 'Name' 値 (タイプ 'Object') を取得できません。BindingExpression:Path=SelectedObject.Name; DataItem='PropertyGrid' (Name='PropertyGridTab'); ターゲット要素は 'PropertyGrid' (Name='PropertyGridTab') です。ターゲット プロパティは 'SelectedObjectName' (タイプ 'String') です InvalidOperationException:'System.InvalidOperationException: プロパティ パスが無効です。'System.Dynamic.DynamicObject+MetaDynamic' には、'Items' という名前のパブリック プロパティがありません。

更新 3:

SelectedObject例外の 1 つは、カスタム ビュー モデルにバインドされた Xceed プロパティ グリッドに関連していることがわかりました。完全に機能しますが、上記の「警告」が発生します。これは Xceed イシュー チームへの質問だと思います。

4

0 に答える 0