【问题标题】:WPF Datagrid binding and column displayWPF Datagrid 绑定和列显示
【发布时间】:2012-05-10 13:33:21
【问题描述】:

我有数据表作为 DataGrid 的项目源,这个数据表有很多列。是否可以在不创建新表的情况下显示几列而不是全部?

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

    是的,是的。只需标记AutoGenerateColumns=False 并手动定义您的列。您可以使用普通的文本绑定列、复选框列、自定义 XAML 模板列等,如您在 documentation 中所见。

    <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>
    

    【讨论】:

      【解决方案2】:

      此外,您可以处理DataGrid.AutoGeneratingColumn 事件并为您不想显示的列设置e.Cancel = true。这样您就不必手动定义要显示的列。

      【讨论】:

        【解决方案3】:

        是的,非常是的。如果您的表结构和列名保持不变,则在 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 包含列 FirstColumnNameSecondColumnName 时,它们将被数据绑定到您的 Datagrid。

        【讨论】:

        • 为什么会有dg:前缀...,是必须的吗?
        猜你喜欢
        • 2014-02-09
        • 2013-03-23
        • 2021-08-26
        • 2011-07-18
        • 2023-03-29
        • 2014-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多