簡體   English   中英

WPF Datagrid 綁定和列顯示

[英]WPF Datagrid binding and column display

我有數據表作為 DataGrid 的項目源,這個數據表有很多列。 是否可以在不創建新表的情況下顯示幾列而不是所有列?

是的。 只需標記AutoGenerateColumns=False並手動定義您的列。 您可以使用普通的文本綁定列、復選框列、自定義 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>

此外,您可以處理DataGrid.AutoGeneratingColumn事件並為不想顯示的列設置e.Cancel = true。 這樣您就不必手動定義要顯示的列。

是的,是的,非常。 如果您的表結構和列名保持不變,則在 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>

然后在代碼隱藏中簡單地提供 Source 之類的

mydg.ItemSource = Data.DefaultView;

現在,當您的 DataTable 包含列FirstColumnNameSecondColumnName它們將數據綁定到您的 Datagrid。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM