Datagrid itemssource为空

时间:2012-09-27 06:42:09

标签: c# wpf xaml

当我从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>

2 个答案:

答案 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 
});