WPF 绑定设计时“预期属性”错误

Xce*_*led 3 c# wpf xaml visual-studio-2013

我正在尝试将可观察集合绑定到 WPF DataGrid。我的属性之一是布尔值。我不喜欢 DataGrid 的 CheckboxColumn,因此我使用 TemplateColumn 推出了自己的 CheckboxColumn,并将其绑定到 DataContext 上的公共属性。该项目设计、编译和运行良好。但是,在设计器中,Visual Studio 2013 Professional 用红色强调了绑定路径。当我将鼠标悬停在它上面时,它会显示“预期属性”。奇怪的是,这不会显示在错误列表中,但滚动条上确实有红色的“错误标记”。另外,如果我使用“标准”CheckboxColumn,VS 不会显示下划线。

这是我的 DataContext 类:

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

    public int HashCode { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

这是 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>
Run Code Online (Sandbox Code Playgroud)

这是错误的屏幕截图:

错误

奇怪的是,VS 对于这个 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*"/>
        <DataGridCheckBoxColumn Binding="{Binding Path=Log, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Header="Log" />
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

正如我所说,它编译并运行良好。这是 Visual Studio 中的错误吗?

Fra*_*ank 5

尝试为 DataTemplate 指定数据类型,如下所示:

<DataTemplate DataType="wpfApplication1:Connection">
    <CheckBox ... />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)