我正在尝试将可观察集合绑定(bind)到 WPF DataGrid。我的属性之一是 bool 值。我不喜欢 DataGrid 的 CheckboxColumn,因此我使用 TemplateColumn 推出了自己的 CheckboxColumn,我将其绑定(bind)到 DataContext 上的公共(public)属性。该项目设计、编译和运行良好。但是,在设计器中,Visual Studio 2013 Professional 将绑定(bind)路径用红色下划线。当我将鼠标悬停在它上面时,它会显示“预期属性(property)”。奇怪的是,这并没有出现在错误列表中,但滚动条上确实有红色的“错误标记”。此外,如果我使用“标准”CheckboxColumn,VS 不会显示下划线。
这是我的 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>
错误截图如下:
奇怪的是,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>
正如我所说,它编译并运行良好。这是 Visual Studio 中的错误吗?
最佳答案
尝试像这样为 DataTemplate 指定数据类型:
<DataTemplate DataType="wpfApplication1:Connection">
<CheckBox ... />
</DataTemplate>
关于c# - WPF 绑定(bind)设计时 "Property Expected"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27684665/