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

时间:2013-08-09 13:24:32

标签: c# wpf xaml

只有在我添加以下XAML代码时才会出现此错误: enter image description here

 <DataGridTemplateColumn Header="Ist aktiv" IsReadOnly="True">
     <DataGridTemplateColumn.CellTemplate>
         <DataTemplate>
             <CheckBox IsChecked="{Binding IsActiveBool}"  />
          </DataTemplate>
     </DataGridTemplateColumn.CellTemplate>
 </DataGridTemplateColumn>

</DataGrid>

4 个答案:

答案 0 :(得分:6)

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

,你甚至会收到此错误信息
<DataGrid.Columns> </DataGrid.Columns>

标签

答案 1 :(得分:1)

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

Items collection must be empty before using ItemsSource in Silverlight

Error: Items collection must be empty before using ItemsSource

Getting an “Items collection must be empty before using ItemsSource” with EF

DataGridTemplateColumn : Items collection must be empty before using ItemsSource.

Items collection must be empty before using ItemsSource

如果你在这些帖子中找不到答案,也许你可以自己进行搜索...... SO用户通常最好在之前搜索他们在这里提出问题。< / p>

答案 2 :(得分:1)

仅供参考......

我遇到了问题,因为我添加了这种看起来非常奇怪的风格:

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

答案 3 :(得分:0)

这是我的代码!有用。真的,我忘了把标签放在适当的地方。

<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>