简体   繁体   English

WPF GridView列绑定问题

[英]WPF GridView Column Binding issue

I have the following GridView control that works fine: 我有以下运行良好的GridView控件:

<DataGrid IsReadOnly="true"
          ItemsSource="{Binding CiList}"
          AutoGenerateColumns="True"
          SelectedItem="{Binding Path=CI}" />

If I set AutoGenerateColumns="False" and manually add a DataGridTextColumn, like so: 如果我设置AutoGenerateColumns="False"并手动添加DataGridTextColumn,如下所示:

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

I get an InvalidOperationException “Items collection must be empty before using ItemsSource.” 我收到InvalidOperationException“在使用ItemsSource之前,Items集合必须为空。”

What am I doing incorrectly? 我做错了什么? Thanks! 谢谢!

EDIT: I'm using MVVM pattern, and the DataContext for the Window is my ViewModel, of which CiList is a property. 编辑:我正在使用MVVM模式,并且窗口的DataContext是我的ViewModel,其中CiList是其属性。

you need to define your columns within DataGrid.Columns 您需要在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>

You need to add Columns tag to the grid 您需要将Columns标签添加到网格

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

Put column in DataGrid.Columns like below: 将列放在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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM