0

当我从数据网格中选择 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>
4

2 回答 2

1

您应该使用绑定将项目添加到数据网格:

<DataGrid ItemsSource="{Binding DataGridItemsSource}" ...

在您的视图模型中(或分配给您视图的 DataSource 的东西):

public ObservableCollection<ProductData> DataGridItemsSource { get; set; }

ObservableCollection 是在 wpf 绑定中使用的,因为它实现了允许数据网格对此集合中的更改做出反应的模式。

于 2012-09-27T06:48:28.503 回答
1

您必须使用网格的 ItemsSource 属性

dgProductList.ItemsSource = YourData;

或者

dgProductList.SetBinding(ItemsControl.ItemsSourceProperty, new Binding { 

Source = YourData 
});
于 2012-09-27T06:52:30.903 回答