2014-12-29 25 views
3

我試圖將可觀察集合綁定到WPF DataGrid。我的一個屬性是布爾。我不喜歡DataGrid的CheckboxColumn,所以我使用了一個TemplateColumn,我將它綁定到DataContext的公共屬性上。該項目設計,編譯並運行良好。但是,在設計器中,Visual Studio 2013 Professional強調了紅色的綁定路徑。當我將鼠標懸停在上面時,它顯示「Property Expected」。奇怪的是,這並沒有出現在錯誤列表中,但滾動條卻得到了紅色的「錯誤標記」。另外,如果我使用「標準」CheckboxColumn,VS不會顯示下劃線。WPF綁定設計時間「Property Expected」錯誤

這裏是我的DataContext的類:

sealed class Connection : IDisposable 
{ 
    public bool Log { get; set; } 

    public int HashCode { get; private set; } 
} 

這是DataGrid的XAML:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=Connections}" SelectionMode="Single"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Path=HashCode, StringFormat={}{0:X}}" Header="ID" IsReadOnly="True" Width="50*"/> 
     <DataGridTemplateColumn Header="Log"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{Binding Path=Log, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

下面是錯誤的截圖:

Error

奇怪的是,VS這個XAML很好,我不想用du e對列的行爲:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=Connections}" SelectionMode="Single"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Path=HashCode, StringFormat={}{0:X}}" Header="ID" IsReadOnly="True" Width="50*"/> 
     <DataGridCheckBoxColumn Binding="{Binding Path=Log, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Header="Log" /> 
    </DataGrid.Columns> 
</DataGrid> 

正如我所說的,它編譯和運行良好。這是Visual Studio中的錯誤嗎?

+0

設計者有時僅僅需要被忽略,關閉XAML文件,然後再次打開它,我打賭它會消失 –

回答

4

嘗試指定數據類型爲DataTemplate中是這樣的:

<DataTemplate DataType="wpfApplication1:Connection"> 
    <CheckBox ... /> 
</DataTemplate> 
+1

問題已解決。多麼奇怪的事情 - 爲什麼不能像WPF那樣推斷WPF類型在運行時顯然會這樣? – Xcelled194