0

リストをデータグリッドにバインドするのに苦労している:

XAML:

<DataGrid Name="dgProductList"
    ItemsSource="{Binding ProductList}">
<DataGridTextColumn Binding="{Binding ProductName}" Header="Item" />
                                <DataGridTextColumn Binding="{Binding Quantity}" Header="Qty" />
                                <DataGridTextColumn Binding="{Binding TotalPrice}" Header="Price" />
                                <DataGridTemplateColumn Width="*">

背後にあるコード:

public IList<SalesItem> ProductList = new List<SalesItem>();

public void LoadProduct(Product product)
        {
            SalesItem item = new SalesItem { ProductName = product.Name, Quantity = 1, TotalPrice = product.Price };
            ProductList.Add(item);
        }

ロードされません。

ありがとうございました。

4

2 に答える 2

1

コレクションをにバインドしてみてください

ObservableCollection<SalesItem>

製品を追加しても、UIはおそらく通知されません。

于 2012-09-27T10:46:12.617 に答える
1

dataGridは、ProductListがいつ更新されるかを認識しません...次のようなObservableCollectionを作成します。

public ObservableCollection<SalesItem> ProductList = new ObservableCollection<SalesItem>();

編集:

バインディングはまったく機能していますか?コントロール/ウィンドウにルートという名前を付け、その要素にバインドします

<Window x:Class="test.MainWindow"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" x:Name="Root">
    <Grid>
        <DataGrid Name="dgProductList" ItemsSource="{Binding ElementName=Root,Path=ProductList}">
            <DataGridTextColumn Binding="{Binding ProductName}" Header="Item" />
            <DataGridTextColumn Binding="{Binding Quantity}" Header="Qty" />
            <DataGridTextColumn Binding="{Binding TotalPrice}" Header="Price" />
        </DataGrid>
    </Grid>
</Window>
于 2012-09-27T10:46:22.677 に答える