2013-08-09 4 views
5

현재 DataGridView에 데이터를 표시하는 WPF 응용 프로그램 (MVVM 사용)에서 작업 중입니다.사용자 정의 열을 사용하는 WPF DataGrid 바인딩

<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는 엔터티 파트의 ObservableCollection입니다.

이제 할인율을 표시하는 DataGrid에 맞춤식 열을 추가하고 순 금액을 표시하는 다른 열을 추가하고 싶습니다. 어떻게해야합니까?

수천 개의 레코드로 작업해야하므로 성능이 중요합니다.

미리 감사드립니다.

+4

당신은 "할인"과 위의 XAML에 "순액"데이터 그리드의 열을 추가하고, 이들 속성이 없습니다 파트 뷰 모델 클래스 또는 다른 "사용자 정의"열 요구 사항이 있습니까? –

+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