[英]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.