绑定List时为空DataGrid
本文关键字:DataGrid List 绑定 | 更新日期: 2023-09-27 18:03:57
我正在尝试绑定类a的列表:
class ClassA
{
public int Number;
public int[,] AnArray;
}
To my DataGrid:
<DataGrid Name="ResultsDataGrid" DataContext="{Binding ResultsForGrid}" ItemsSource="{Binding Path=ResultsForGrid}" AutoGenerateColumns="False" Margin="0,10,176,0" Height="220.378" VerticalAlignment="Top" >
<DataGrid.Columns>
<DataGridTextColumn Header="Number" Binding="{Binding Path=Number}"/>
<DataGridTextColumn Header="Array Rows" Binding="{Binding Path=AnArray.GetLength(0)}"/>
<DataGridTextColumn Header="Array Columns" Binding="{Binding Path=AnArray.GetLength(1)}"/>
</DataGrid.Columns>
</DataGrid>
要绑定它,我使用List<ClassA> ResultsForGrid;
,其中包含我想要在视图中显示的所有元素,并在我的窗口类中声明为全局变量。当我的列表充满了ClassA的所有元素时,我需要显示,我设置ItemsSource为
ResultsDataGrid.ItemsSource = ResultsForGrid;
奇怪的是,当我运行代码时,我得到一个dataGrid具有正确的标题和正确的行数(ResultsForGrid中的元素数),但完全为空。
我已经尝试了绑定和DataContext的许多组合,因为这个视图似乎很容易在网络上得到问题,但都无济于事。
您的
class ClassA
{
public int Number;
public int[,] AnArray;
}
应该实现INotifyPropertyChanged
,并且字段应该被属性替换:
private _number;
public int Number
{
get { return _number; }
set
{
_number= value;
OnPropertyChanged();
}
}
不能在XAML中使用方法:
<DataGridTextColumn Header="Array Rows" Binding="{Binding Path=AnArray.GetLength(0)}"/>
创建一个属性来包装这个AnArray.GetLength(0)
并绑定到这个属性。
您还需要包装List<ClassA>
的类,该类的实例应该是您的DataGrid
实例的DataContext
。