2012-05-10 10 views

Respuesta

17

Sí, lo es. Simplemente marque AutoGenerateColumns=False y defina manualmente sus columnas. Puede usar columnas normales de texto, columnas de casillas de verificación, columnas personalizadas de plantilla XAML y más, como puede ver en el MSDN Library 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> 
+0

¡¡¡Gracias !!!!!!!!! –

4

Sí, sí mucho. Si la estructura de la tabla y el nombre de la columna permanecen constantes, en Datagrid XAML establece AutoGenerateColums = False y crea manualmente todas las columnas.

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

y luego en el código subyacente sencilla proporcionar Fuente como

mydg.ItemSource = Data.DefaultView; 

Ahora, cuando su DataTable contiene la columna FirstColumnName y SecondColumnName serán DataBound a su cuadrícula de datos.

+0

¡¡¡Gracias !!!!!!!!!! –

+0

por qué hay un prefijo 'dg:' ... ¿es obligatorio? –

5

Además, se puede manejar DataGrid.AutoGeneratingColumn evento y establecer e.Cancel = true para las columnas que no desea que se muestren. De esta forma, no tiene que definir manualmente las columnas que desea mostrar.

Cuestiones relacionadas