2013-02-11 27 views
0

認識的DataGrid的屬性在一個WPF用戶控件聲明我有以下樣式定義:VisulStudio 2012設計者不正確

<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類型上。它說:會員「XXXXXXXXXXX」未被識別或無法訪問

儘管存在錯誤,但在運行時正確應用了樣式,並且DataGrid上存在屬性(它們是DependencyProperies)並且是公共的。

任何想法是什麼可能導致它認爲他們不存在或爲什麼他們無法訪問設計師?

順便說一句,背景屬性是好的。只有其他7個有錯誤。

回答

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> 
+0

謝謝..我一直盯着那麼久,我沒有注意到多餘的空間! – 2013-02-13 23:07:54

1

它可能是一個剪切/粘貼錯誤,但你有,除了背景和BorderBrush的所有屬性名右雙引號前的額外空間。解析器可能在反射之前修剪屬性名稱,以便能夠在運行時找到它。