デバッグ中に共通言語ランタイム例外をチェックすると、一連の 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 イシュー チームへの質問だと思います。