[英]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 包含列FirstColumnName
和SecondColumnName
它們將數據綁定到您的 Datagrid。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.