2010-03-24 11 views
5

Ho cercato ore per qualcosa di molto semplice: associare un datagrid WPF a un datatable per vedere le colonne in fase di progettazione. Non riesco a far funzionare nessuno di questi esempi per me.Come associare una tabella in un set di dati a un datagrid WPF in C# e XAML

Ecco il codice C# per compilare l'InfoWork datatable all'interno informazioni set di dati:

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

Il problema è non importa quanto dichiaro 'informazioni' o 'infoWork' Visual Studio/XAML non riesco a trovarlo . Ho provato:

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

Inoltre ho provato questo esempio da wpf.codeplex, ma XAML non ha nemmeno come il “locale:” parola chiave!

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

Ci sono due questioni principali qui: 1) Come dichiaro l'InfoWork tavolo in C# in modo che XAML può vedere? Ho provato a dichiararlo pubblico nella classe della finestra in cui XAML esiste senza successo. 2) Come si dichiara la risorsa Windows in XAML, in modo specifico il datatable all'interno del set di dati?

Per curiosità, esiste una ragione per cui ItemsSource non viene visualizzato come proprietà che viene impostata nella finestra di progettazione delle proprietà?

+0

Ci è un esempio meraviglioso che risolve "la maggior parte" del mio problema pubblicato su: http://www.codeproject.com/KB/WPF/WPFDataGridExamples.aspx –

risposta

5

Utilizzando il Microsoft DataGrid nel seguente modo funziona per me:

In XAML includo il DataGrid:

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

Nel mio modello vista espongo 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

Questo funziona fintanto che si imposta il contesto dati sul modulo stesso , cioè, nel costruttore: this.DataContext = this; – jrcs3

Problemi correlati