2012-05-10 28 views
10

DataGridのアイテムソースとしてデータテーブルがありますが、このデータテーブルには多くの列があります。新しいテーブルを作成しなくても、すべてを表示するのではなく、わずかな列を表示することは可能ですか?WPF Datagridバインドと列表示

答えて

17

はい、そうです。 AutoGenerateColumns=Falseに印を付け、列を手動で定義してください。 MSDN Library documentationのように、通常のテキストバインド列、チェックボックス列、カスタムXAMLテンプレート列などを使用できます。

<DataGrid ItemsSource="{Binding DataSource}" AutoGenerateColumns="False" > 
    <DataGrid.Columns> 
    <DataGridTextColumn Header="Simple Value" 
         Binding="{Binding SimpleValue}" Width="*" /> 
    <DataGridTemplateColumn Width="*" Header="Complex Value"> 
     <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
      <StackPanel> 
       <TextBox Text="{Binding ComplexValue}"/> 
       <TextBox Text="{Binding ComplexValue2}"/> 
      </StackPanel> 
      </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
    </DataGrid> 
+0

ありがとう!!!!!!!!! –

4

はい、ありがとうございます。テーブル構造と列名が一定のままである場合、Datagrid XAMLでAutoGenerateColums = Falseと設定し、手動ですべての列を作成します。

<dg:DataGrid Name="mydg" ItemsSource="{Binding Data}" AutoGenerateColumns="False"> 
<dg:DataGrid.Columns> 
    <dg:DataGridTextColumn Header="Col 0" Binding="{Binding FirstColumnName}" /> 
    <dg:DataGridTextColumn Header="Col 1" Binding="{Binding SecondColumnName}" /> 
</dg:DataGrid.Columns> 
</dg:DataGrid> 

、その後、分離コードシンプルで

mydg.ItemSource = Data.DefaultView; 
あなたのDataTableに列 FirstColumnNameが含まれている今

と、彼らはあなたのデータグリッドにデータバインドされますSecondColumnNameのようなソースを提供しています。

+0

ありがとう!!!!!!!!!! –

+0

なぜ 'dg:'プレフィックスがあるのですか?それは必携ですか? –

5

また、あなたはDataGrid.AutoGeneratingColumnイベントを処理して、表示させたくないカラムに対してe.Cancel =真を設定することができます。この方法では、表示する列を手動で定義する必要はありません。

関連する問題