2010-03-24 15 views
5

Ich habe nach Stunden für etwas sehr einfaches gesucht: ein WPF-Datagrid an eine Datentabelle binden, um die Spalten zur Entwurfszeit anzuzeigen. Ich kann keines der Beispiele für mich arbeiten lassen.Wie Sie eine Tabelle in einem Dataset an ein WPF-Datagrid in C# und XAML binden

Hier ist der C# -Code ist die Datentabelle InfoWork innerhalb des Datensatzes Informationen zu füllen:

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

Das Problem egal ist, wie ich ‚info‘ oder ‚infoWork‘ Visual Studio/XAML kann es nicht erklären finden . Ich habe versucht:

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

Ich habe auch dieses Beispiel aus wpf.codeplex versucht, aber XAML nicht einmal wie das „local:“ Schlüsselwort!

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

Es gibt wirklich zwei Fragen hier: 1) Wie kann ich die Tabelle InfoWork in C# zu erklären, so dass XAML es sehen kann? Ich habe versucht, es in der Fensterklasse zu deklarieren, in der XAML existiert, ohne Erfolg. 2) Wie deklariere ich die Windows-Ressource in XAML, insbesondere die Datentabelle im Dataset?

Aus Neugier, gibt es einen Grund, dass ItemsSource nur nicht als eine Eigenschaft angezeigt wird, die im Eigenschaftsfenster festgelegt wird?

+0

Es ist ein wunderbares Beispiel, das "das meiste" meines Problems löst, das an geschickt wird: http://www.codeproject.com/KB/WPF/WPFDataGridExamples.aspx –

Antwort

5

das Microsoft Datagrid in der folgenden Art und Weise verwenden funktioniert für mich:

In XAML umfassen ich das Datagrid:

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

Meiner Ansicht nach Modell belichten ich eine 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

Dieses funktioniert, solange Sie den Datenkontext zum Formular selbst einstellen dh im Konstruktor: this.DataContext = this; – jrcs3

Verwandte Themen