VisulStudio 2012 设计器无法正确识别 DataGrid 的属性



在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上不存在这些属性。它说:成员"XXXXXXXXXXXXX"未被识别或无法访问

尽管存在错误,但该样式在运行时应用正确,并且属性存在于DataGrid上(它们是DependencyProperies)并且是公共的。

你知道是什么导致它认为它们不存在吗?或者为什么设计师无法访问它们?

顺便说一句,Background属性还可以。只有其他7个有错误。

我已经在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>

这可能是一个剪切/粘贴错误,但除了Background和BorderBrush之外,所有属性名称的右双引号前面都有一个额外的空格。解析器可能会在反射之前修剪属性名称,以便能够在运行时找到它。

相关内容

  • 没有找到相关文章

最新更新