C# 在datagrid wpf中使用带有复选框控件的ItemsSource之前,Items集合必须为空

C# 在datagrid wpf中使用带有复选框控件的ItemsSource之前,Items集合必须为空,c#,wpf,xaml,C#,Wpf,Xaml,此错误仅在添加以下XAML代码时发生: 出现此错误的原因有很多,其中大部分(如果不是全部的话)已经在StackOverflow上讨论过了。请看以下帖子: 如果你在这些帖子中找不到答案,也许你可以自己搜索。。。一般情况下,SO用户最好在提问之前进行搜索。出现此错误的原因有很多,其中大部分(如果不是全部)已经在StackOverflow上讨论过。请看以下帖子: 如果你在这些帖子中找不到答案,也许你可以自己搜索。。。一般情况下,SO用户最好在这里提问之前进行搜索。我也第一次遇到了

此错误仅在添加以下XAML代码时发生:


出现此错误的原因有很多,其中大部分(如果不是全部的话)已经在StackOverflow上讨论过了。请看以下帖子:


如果你在这些帖子中找不到答案,也许你可以自己搜索。。。一般情况下,SO用户最好在提问之前进行搜索。

出现此错误的原因有很多,其中大部分(如果不是全部)已经在StackOverflow上讨论过。请看以下帖子:


如果你在这些帖子中找不到答案,也许你可以自己搜索。。。一般情况下,SO用户最好在这里提问之前进行搜索。

我也第一次遇到了类似的问题,我注意到如果您忘记添加/附上

<DataGrid.Columns> </DataGrid.Columns>


标签

我第一次也遇到了类似的问题,我注意到如果您忘记添加/附上标签,甚至可能会收到此错误消息

<DataGrid.Columns> </DataGrid.Columns>


标签仅供参考

我遇到了这个问题,因为我添加了这个看起来很奇怪的样式:

    <Style TargetType="{x:Type DataGridCell}">
        <EventSetter Event="PreviewMouseLeftButtonDown" Handler="DataGridCell_PreviewMouseLeftButtonDown" />
    </Style>

仅供参考

我遇到了这个问题,因为我添加了这个看起来很奇怪的样式:

    <Style TargetType="{x:Type DataGridCell}">
        <EventSetter Event="PreviewMouseLeftButtonDown" Handler="DataGridCell_PreviewMouseLeftButtonDown" />
    </Style>

这是我的代码!它起作用了。真的,我忘了把标签放在合适的地方

<DataGrid x:Name="CostsDataGrid" HorizontalAlignment="Left" Margin="307,98,0,0" VerticalAlignment="Top" Height="260" Width="313" AutoGenerateColumns="False" MinColumnWidth="35" VerticalGridLinesBrush="#FF7A7878" HorizontalGridLinesBrush="#FF7A7878" RowHeight="35" Foreground="Black" PreviewMouseRightButtonDown="CostsDataGrid_PreviewMouseRightButtonDown" >
    <DataGrid.Columns>
    <DataGridTemplateColumn Header="состояние" Width="70" IsReadOnly="False">
        <DataGridTemplateColumn.CellTemplate >
            <DataTemplate>
                <CheckBox IsChecked="{Binding Path=IsSelected, UpdateSourceTrigger=PropertyChanged}" Checked="OnChecked" Unchecked="OffChecked"/>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>

        <DataGridTextColumn Header="расход" Binding="{Binding name}" Width="121" IsReadOnly="True" />
        <DataGridTextColumn Header="сумма" Binding="{Binding price}" Width="120" IsReadOnly="True" />
    </DataGrid.Columns>
</DataGrid>

这是我的代码!它起作用了。真的,我忘了把标签放在合适的地方

<DataGrid x:Name="CostsDataGrid" HorizontalAlignment="Left" Margin="307,98,0,0" VerticalAlignment="Top" Height="260" Width="313" AutoGenerateColumns="False" MinColumnWidth="35" VerticalGridLinesBrush="#FF7A7878" HorizontalGridLinesBrush="#FF7A7878" RowHeight="35" Foreground="Black" PreviewMouseRightButtonDown="CostsDataGrid_PreviewMouseRightButtonDown" >
    <DataGrid.Columns>
    <DataGridTemplateColumn Header="состояние" Width="70" IsReadOnly="False">
        <DataGridTemplateColumn.CellTemplate >
            <DataTemplate>
                <CheckBox IsChecked="{Binding Path=IsSelected, UpdateSourceTrigger=PropertyChanged}" Checked="OnChecked" Unchecked="OffChecked"/>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>

        <DataGridTextColumn Header="расход" Binding="{Binding name}" Width="121" IsReadOnly="True" />
        <DataGridTextColumn Header="сумма" Binding="{Binding price}" Width="120" IsReadOnly="True" />
    </DataGrid.Columns>
</DataGrid>


出于同样的原因,我收到了同样的错误。如果我去掉这个,它就会消失。你是怎么解决的?我因为同样的原因犯了同样的错误。如果我去掉这个,它就会消失。你是怎么做到的?这对我很有效。结果我复制并粘贴了我使用的
DataGridTemplateColumn
到了错误的位置,在
标记之外。这对我来说很有效。结果我复制并粘贴了我使用的
DataGridTemplateColumn
到了错误的位置,在
标记之外