2010-03-24 24 views
5

He estado buscando horas para algo muy simple: vincular una cuadrícula de datos WPF a una tabla de datos para ver las columnas en tiempo de diseño. No puedo hacer que ninguno de los ejemplos funcione para mí.Cómo enlazar una tabla en un conjunto de datos a una cuadrícula de datos WPF en C# y XAML

Este es el código C# para poblar el INFOWORK tabla de datos dentro de la información de datos:

info = new Info(); 
InfoTableAdapters.InfoWorkTableAdapter adapter = new InfoTableAdapters.InfoWorkTableAdapter(); 
adapter.Fill(info.InfoWork); 

El problema es, no importa cómo me declaro 'info' o 'INFOWORK' Visual Studio/XAML no lo encuentra . He tratado:

<Window.Resources> 
    <ObjectDataProvider x:Key="infoWork" ObjectType="{x:Type local:info}" /> 
</Window.Resources> 

También han tratado este ejemplo de wpf.codeplex, pero XAML ni siquiera le gusta el “local:” palabra clave!

<Window.Resources> 
    <local:info x:Key="infoWork"/> 
</Window.Resources> 

En realidad, hay dos cuestiones principales aquí: 1) ¿Cómo declaro la INFOWORK tabla en C# para que XAML puede verlo? Intenté declararlo Público en la clase de ventana en la que XAML existe sin éxito. 2) ¿Cómo declaro el recurso de Windows en XAML, específicamente la tabla de datos dentro del conjunto de datos?

Por curiosidad, ¿hay alguna razón por la cual ItemsSource simplemente no aparece como una propiedad que se establece en la ventana de diseño de propiedades?

+0

Hay es un ejemplo maravilloso que resuelve la "mayoría" de mi problema publicado en: http://www.codeproject.com/KB/WPF/WPFDataGridExamples.aspx –

Respuesta

5

Utilizando el Microsoft DataGrid de la siguiente manera funciona para mí:

En XAML incluyo la cuadrícula de datos:

<WpfToolkit:DataGrid 
     Grid.Row="4" Grid.Column="0" 
     ItemsSource="{Binding Path=GridData, Mode=OneWay}" > 
    </WpfToolkit:DataGrid> 

En mi modelo de vista expongo un DataView:

public DataView GridData 
    { 
    get 
    { 
     DataSet ds = new DataSet("MyDataSet"); 

     using (SqlConnection conn = new SqlConnection(ConnectionString)) 
     { 
      SqlCommand cmd = conn.CreateCommand(); 
      cmd.CommandType = CommandType.Text; 
      cmd.CommandText = "SELECT * FROM HumanResources.Employee"; 

      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      da.Fill(ds); 
     } 

     return ds.Tables[0].DefaultView; 
    } 
    } 
+0

Esto funciona siempre que establezca el contexto de datos en el formulario mismo , es decir, en el constructor: this.DataContext = this; – jrcs3

Cuestiones relacionadas