使用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
答案 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。
希望这个例子可以帮助你追求成功。