即使datagrid保留值,Datagrid也会显示空行

时间:2015-05-18 23:11:45

标签: c# wpf datagrid

使用WPF, 我有问题,数据网格的数据没有被渲染,我只能看到空行。 (正在插入,调试一些数据。) 即使数据网格保留dg.ItemsSource中的值,它仍然显示空行。

XML代码:

        <DataGrid Name="dg"  Initialized="dg_Initialized" AutoGenerateColumns="False" 
              CanUserResizeRows="False" CanUserAddRows="False" CanUserDeleteRows="False"
              IsReadOnly="True"
              ItemsSource="{Binding}" SelectionMode="Extended">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Name}" Header="Name"/>
            <DataGridTextColumn Binding="{Binding Type}" Header="Type"/>
            <DataGridTextColumn Binding="{Binding InventoryID}" Header="InventoryID"/>
            <DataGridTextColumn Binding="{Binding Location}" Header="Location"/>
            <DataGridCheckBoxColumn Binding="{Binding InStock}" Header="InStock"/>
            <DataGridTextColumn Binding="{Binding StockCount}" Header="StockCount"/>
            <DataGridTextColumn Binding="{Binding Price}" Header="Price"/>

        </DataGrid.Columns>

后端代码:

我将每个产品添加到集合中 最后我将集合添加到datagrid项目源。

        data = new ObservableCollection<Product>();
        productsList = bl.FindProductByName(""); // Get List of products
        for (int i = 0; i < productsList.Count; i++)
        {
            if (productsList[i] != null)
                  data.Add(productsList[i]);
        }

        dg.ItemsSource = data;

产品保留:

Name - string
Type - string
InventoryID - Integer
Location - Integer
InStock - Bool
StockCount - Integer
Price - Integer

1 个答案:

答案 0 :(得分:0)

重要的是,您展示的所有成员都是公开的,否则他们不会在网格中看到。如果您没有,请尝试为您的媒体资源创建一个公开的获取方法。

编辑:

<DataGrid  Name="DataGrid1" AutoGenerateColumns="False" ">
   <DataGrid.Columns>
      <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" Width="*"/>
   </DataGrid.Columns>
</DataGrid>

Public class Person {
 private String pm_Name = "";
}

Public String Name { 
  get { return pm_Name; } 
  set { pm_Name = value;} 
}

List<Person> Persons = new List<Persons>();
Persons.Add(new Person() { Name = Sam });
Persons.Add(new Person() { Name = Peter });

DataGrid1.ItemsSource = Persons;

此示例应该有效。所以基本上要描述它我使用带有对象的List,因为我设置为我的网格itemssource。

之后我转到我的xaml并在这种情况下绑定了对象属性的路径&#39; Name&#39;。

如果您想使用可以密切关注列表对象更改的列表/集合,可以使用已经使用的ObservableCollections。

希望这个例子可以帮助你追求成功。