C# WPF GridView列绑定问题

C# WPF GridView列绑定问题,c#,wpf,xaml,data-binding,C#,Wpf,Xaml,Data Binding,我有以下运行良好的GridView控件: <DataGrid IsReadOnly="true" ItemsSource="{Binding CiList}" AutoGenerateColumns="True" SelectedItem="{Binding Path=CI}" /> 我得到一个InvalidOperationException“在使用ItemsSource之前,Items集合必须为空。” 我做错了什么?谢

我有以下运行良好的GridView控件:

<DataGrid IsReadOnly="true"
          ItemsSource="{Binding CiList}"
          AutoGenerateColumns="True"
          SelectedItem="{Binding Path=CI}" />
我得到一个InvalidOperationException“在使用ItemsSource之前,Items集合必须为空。”

我做错了什么?谢谢


编辑:我使用的是MVVM模式,窗口的DataContext是我的ViewModel,CiList是它的一个属性。

您需要在
DataGrid.columns中定义列。

<DataGrid IsReadOnly="true" ItemsSource="{Binding CiList}" AutoGenerateColumns="False" AlternatingRowBackground="Gainsboro"  AlternationCount="2" Height="150" SelectedItem="{Binding Path=CI}">
      <DataGrid.Columns>
                    <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
      </DataGrid.Columns>
</DataGrid>

您需要在
DataGrid.columns

<DataGrid IsReadOnly="true" ItemsSource="{Binding CiList}" AutoGenerateColumns="False" AlternatingRowBackground="Gainsboro"  AlternationCount="2" Height="150" SelectedItem="{Binding Path=CI}">
      <DataGrid.Columns>
                    <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
      </DataGrid.Columns>
</DataGrid>

您需要将Columns标记添加到网格中

<DataGrid..>
   <DataGrid.Columns>
      <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
   </DataGridColumns>
...

...

您需要将Columns标记添加到网格中

<DataGrid..>
   <DataGrid.Columns>
      <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
   </DataGridColumns>
...

...

将列放入DataGrid。列如下:

<DataGrid IsReadOnly="true" ItemsSource="{Binding CiList}" AutoGenerateColumns="False" AlternatingRowBackground="Gainsboro"  AlternationCount="2" Height="150" SelectedItem="{Binding Path=CI}">
  <DataGrid.Columns>
        <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
  </DataGrid.Columns>
</DataGrid>

将列放入DataGrid。列如下:

<DataGrid IsReadOnly="true" ItemsSource="{Binding CiList}" AutoGenerateColumns="False" AlternatingRowBackground="Gainsboro"  AlternationCount="2" Height="150" SelectedItem="{Binding Path=CI}">
  <DataGrid.Columns>
        <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
  </DataGrid.Columns>
</DataGrid>