当我从datagrid中选择itemsource时,该值为null。是因为我没有在datagrid中定义imtemsource吗?
这是我在数据网格中添加一行的方式:
this.dgProductList.Items.Add(new {ProductId=product.ProductId, Name=product.Name, Qty=1, Price=product.Price});
这是我的wpf:
<DataGrid Name="dgProductList"
AutoGenerateColumns="False"
FontSize="15"
HorizontalGridLinesBrush="#f0f0f0"
VerticalGridLinesBrush="#f0f0f0"
ScrollViewer.CanContentScroll="False"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Image">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Height="10" Width="10" Source="{Binding Picture}" Stretch="Uniform"></Image>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding ProductId}" Visibility="Hidden"/>
<DataGridTextColumn Binding="{Binding Name}" Header="Item" />
<DataGridTextColumn Binding="{Binding Qty}" Header="Qty" />
<DataGridTextColumn Binding="{Binding Price}" Header="Price" />
<DataGridTemplateColumn Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Button Width="30" Name="btnDecrease" Content="-" />
<Button Width="30" Name="btnIncrease" Content="+" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:1)
您应该使用绑定将项目添加到datagrid:
<DataGrid ItemsSource="{Binding DataGridItemsSource}" ...
在您的视图模型中(或者分配给视图的DataSource的内容):
public ObservableCollection<ProductData> DataGridItemsSource { get; set; }
ObservableCollection是在wpf绑定中使用的,因为它实现了允许datagrid对此集合中的更改做出反应的模式。
答案 1 :(得分:1)
您必须使用网格的ItemsSource属性
像
dgProductList.ItemsSource = YourData;
或
dgProductList.SetBinding(ItemsControl.ItemsSourceProperty, new Binding {
Source = YourData
});