2013-08-09 5 views
5

現在、私はDataGridViewのデータを表示しているWPFアプリケーション(MVVMを使用)に取り組んでいます。WPFデータグリッドとカスタムカラムのバインディング

<DataGrid RowHeaderWidth="0" ItemsSource="{Binding PartsList,UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Item Name" IsReadOnly="True" Width="*" Binding="{Binding ProductName}"></DataGridTextColumn> 
     <DataGridTextColumn Header="Model Name" IsReadOnly="True" Width="*" Binding="{Binding CarModelName}"></DataGridTextColumn> 
     <DataGridTextColumn Header="Company Name" IsReadOnly="True" Width="*" Binding="{Binding CompanName}"></DataGridTextColumn> 
     <DataGridTextColumn Header="Price" IsReadOnly="True" Width="*" Binding="{Binding Rate}"> 
    </DataGrid.Columns> 
</DataGrid> 

ここで、PartsListは、エンティティPartのObservableCollectionです。

ここでは、割引を示すDataGridにカスタム列を追加し、純額を示す別の列を追加します。これどうやってするの?

私はパフォーマンスが非常に重要なので、何千ものレコードで作業する必要があるので、これを行うことをお勧めします。

ありがとうございます。

+4

は、あなただけの上であなたのXAMLに「ディスカウント」と「正味金額」のDataGridの列を追加し、中にこれらの性質を持つことはできませんPartビューモデルクラス、または他の「カスタム」列要件がありますか? –

+0

他のカスタム列は必要ありません。私はあなたのソリューションで動作します。ありがとうございます! – rupareliab

+0

またはuは単に列を追加してコンバーターに値を計算させることができます – Inga

答えて

0

DataGridLoadedイベントに列を追加しよう:

private void DataGrid_Loaded_1(object sender, RoutedEventArgs e) 
{ 
    dataGrid.Columns.Add((DataGridTextColumn)this.Resources["DiscountColumn"]); 
    dataGrid.Columns.Add((DataGridTextColumn)this.Resources["NetAmountColumn"]); 

    //Alternatively you can create columns in .cs like 

    dataGrid.Columns.Add(new DataGridTextColumn() { Header = "Dicount", Binding = new Binding("Discount") }); 
    dataGrid.Columns.Add(new DataGridTextColumn() { Header = "Net Amount", Binding = new Binding("NetAmount") }); 
} 
<Window.Resources> 
    <DataGridTextColumn x:Key="DiscountColumn" Header="Discount" IsReadOnly="True" Width="*" Binding="{Binding Discount}"/> 
    <DataGridTextColumn x:Key="NetAmountColumn" Header="Net Amount" IsReadOnly="True" Width="*" Binding="{Binding NetAmount}"/> 
</Window.Resources> 

<DataGrid RowHeaderWidth="0" x:Name="dataGrid" Loaded="DataGrid_Loaded_1" /> 
+4

あなたの提案をありがとうが、私はMVVMを使用しています。 MVVMでこれをどうやってやることができますか? – rupareliab

+0

ViewModelで列を追加することはできません。そのためには、DataGridの参照が必要です。 – ethicallogics

+0

私は別の方法で試してみます。 – rupareliab

関連する問題