0

WPFユーザーコントロール宣言では、次のスタイルを定義しています。

<UserControl.Resources>
  <Style x:Key="Datagrid" TargetType="{x:Type DataGrid}">
     <Setter Property="Background" Value="Transparent"/>

     <Setter Property="BorderBrush" Value="Transparent"/>
     <Setter Property="HeadersVisibility " Value="Column"/>
     <Setter Property="VerticalGridLinesBrush " Value="{StaticResource DatagridVerticalLinesBrush}"/>
     <Setter Property="HorizontalGridLinesBrush " Value="Transparent"/>
     <Setter Property="RowHeaderWidth " Value="0"/>
     <Setter Property="CanUserAddRows " Value="False"/>
     <Setter Property="CanUserDeleteRows " Value="False"/>
  </Style>
</UserControl.Resources>

問題は、Visual Studio 2012の設計者が、プロパティがDataGridタイプに存在しないと考えていることです。メンバー「XXXXXXXXXXXX」が認識されないか、アクセスできません。

エラーにもかかわらず、スタイルは実行時に正しく適用され、プロパティはDataGridに存在し(これらはDependencyProperiesです)、パブリックです。

何が原因でそれらが存在しないと考えているのか、またはなぜ設計者がそれらにアクセスできないのか、何か考えはありますか?

ちなみに、Backgroundプロパティは問題ありません。エラーがあるのは他の7つだけです。

4

2 に答える 2

1

これをVS2012にロードし、UserControlを作成し、上記のスタイルを追加しました。BackgroundプロパティとBorderBrushプロパティは有効と見なされますが、他のプロパティは無効であることがわかりました。

それから...引用された名前のスペースに気づきました。一度削除すると、すべてが順調です...

<UserControl.Resources>
    <Style x:Key="Datagrid" TargetType="{x:Type DataGrid}">
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="HeadersVisibility" Value="Column"/>

        <Setter Property="BorderBrush" Value="Transparent"/>
        <Setter Property="VerticalGridLinesBrush" Value="{StaticResource DatagridVerticalLinesBrush}"/>
        <Setter Property="HorizontalGridLinesBrush" Value="Transparent"/>
        <Setter Property="RowHeaderWidth" Value="0"/>
        <Setter Property="CanUserAddRows" Value="False"/>
        <Setter Property="CanUserDeleteRows" Value="False"/>
    </Style>
</UserControl.Resources>
于 2013-02-11T23:55:57.357 に答える
1

切り取り/貼り付けエラーの可能性がありますが、BackgroundとBorderBrushを除くすべてのプロパティ名の二重引用符を閉じる前に余分なスペースがあります。パーサーはおそらく、リフレクションの前にプロパティ名をトリミングして、実行時にそれを見つけられるようにします。

于 2013-02-11T23:58:06.690 に答える