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 中的错误吗?
尝试为 DataTemplate 指定数据类型,如下所示:
<DataTemplate DataType="wpfApplication1:Connection">
<CheckBox ... />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2631 次 |
| 最近记录: |