C# 绑定列表时清空DataGrid

C# 绑定列表时清空DataGrid,c#,wpf,binding,datagrid,C#,Wpf,Binding,Datagrid,我正在尝试绑定a类的列表: class ClassA { public int Number; public int[,] AnArray; } 到我的数据网格: <DataGrid Name="ResultsDataGrid" DataContext="{Binding ResultsForGrid}" ItemsSource="{Binding Path=ResultsForGrid}" AutoGenerateColumns="False" Margin="0,

我正在尝试绑定a类的列表:

class ClassA
{
    public int Number;
    public int[,] AnArray;
}
到我的数据网格:

<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>
奇怪的是,当我运行代码时,我得到了一个具有正确标题和正确行数(ResultsForGrid中的元素数)但完全为空的dataGrid

我尝试了绑定和DataContext的多种组合,因为这个视图似乎很容易在web上遇到问题,但都没有用。

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
的类,该类的实例应该是
DataGrid
实例的
DataContext

绑定存在多个问题。MSDN Bindings Declarations文章应该帮助您解决这些问题:要么不要在DataGrid上设置DataContext,要么像下面这样更改DataGrid的绑定ItemsSource=“{Binding}”。。也许这会解决你的问题。你试过换成锯齿形吗array@Neil我只是好奇,锯齿状数组能帮我什么忙?@mjgallam不知道为什么我感觉到一些讽刺,好像这是一个愚蠢的声明,但看看好吧,我现在可以在我的网格中获得一些文本。我所做的只是将类更改为包含属性。我没有添加
INotifyPropertyChanged
,因为我希望网格是常量。我不需要包装我的列表或其他任何东西。您需要实现INotifyPropertyChanged以通过数据网格从版本更新类实例。不要忘记在xaml中添加UpdateSourceTrigger=PropertyChanged。
<DataGridTextColumn Header="Array Rows"  Binding="{Binding Path=AnArray.GetLength(0)}"/>