2016-06-10 11 views
0

Ich bin neu bei WPF und XAML, die von VB.NET und WinForms kommen, also entschuldige ich mich, wenn dieser Beitrag deaktiviert ist. Ich versuche, mehrere sql gebundene Datentabellen in einem Stack-Panel einzurichten, in dem sich ein Raster befindet. Das Stack-Panel hat ein Raster, auf das ich hoffte, mehrere Datentabellen zu platzieren, so dass es eine "Reihe" von Datentabellen wäre. Ich bin auf ein Problem gestoßen, wo jede Datentabelle mehr Einträge hat, als die Datentabelle Platz hat, und es gibt keine Bildlaufleiste. Ich habe versucht, einen Scroll-Viewer zu verwenden, aber war nicht erfolgreich und alle Beiträge, die ich bisher gefunden habe, konnten mir nicht helfen, da sie mich zwingen werden, meinen XAML-Baum neu zu erstellen. Hier ist mein Code soweit.Platzieren Sie mehrere Scrolldatentabellen in einem Raster in einem Stackpanel. WPF

------ ------- XAML

<Window x:Class="Lines.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="251.7" Width="1058"> 

<Grid x:Name="GridMain"> 
    <StackPanel x:Name="StackMain" HorizontalAlignment="Left" Height="100" Margin="10,10,0,0" VerticalAlignment="Top" Width="1030" > 
     <TextBlock FontSize="18" Foreground="Black" FontWeight="Bold" Text="Line 2" HorizontalAlignment="Center" /> 
     <Grid x:Name="Line2Information"> 
      <ScrollViewer x:Name="SVLine2HotParts" HorizontalAlignment="Left"> 
       <DataGrid x:Name="DGLine2HotParts"> 
       </DataGrid> 
      </ScrollViewer> 
     </Grid> 
    </StackPanel> 
</Grid> 

--------------------- ------ C# ----------------

   //SQL command fill 
     SqlConnection conn = new SqlConnection(Connectionstring); 
     SqlDataAdapter da = new SqlDataAdapter("SELECT * from Table", conn); 
     DataTable ds = new DataTable(); 
     da.Fill(ds); 
     Datagrid.ItemsSource = ds.DefaultView; 

So in der XML können Sie sehen, ich einen Textblock mit einem Ort und dann auf dem nächsten " Row "down Ich werde mehrere Datentabellen einstellen, hoffentlich entlang eines Rasters. Irgendeine Hilfe?

Antwort

1

Sie fragen hier eine sehr breite Frage. Ich denke, Sie sollten MVVM erforschen. Es hilft, ein WPF-Design zu strukturieren. Die allgemeine Idee ist, dass Sie ein Element im XAML (in der Ansicht) an eine öffentliche Eigenschaft im ViewModel binden. Änderungen an der Eigenschaft führen dann zu Änderungen des Elements und damit der Benutzeroberfläche. Das Modell enthält die Daten und beschäftigt sich mit dem Abrufen von Daten aus der Datenbank. Sie haben wahrscheinlich eine Eigenschaft vom Typ ObservableCollection im ViewModel, die an das Datagrid gebunden ist. Das ViewModel würde die ObservableCollection aus dem Modell auffüllen. Mit MVVM haben Sie wenig Code hinter sich. Ein Kommentar zu Ihrer "SQL-Befehl füllen", ich nehme an, dass dies in Ihrem Code ist hinter. Sie müssen DGLine2HotParts.Datacontext oder DGLine2HotParts.ItemSource referenzieren, um dem Grid Daten hinzuzufügen. Dies ist ein Versuch, Sie eher in eine bestimmte Richtung als in eine umfassende Antwort zu führen.

+0

Ja, ich werde ein gutes Buch bekommen und recherchieren. Diese WPF ist zwar anders als die Fensterformen, sieht aber deutlich besser aus. Übrigens habe ich herausgefunden, dass ich keine Scroll-Leiste sehen konnte, weil ich die Höhe der Stack-Panel definiert hatte. Sobald ich es entfernt habe, hat sich das Stack-Panel erweitert, wo ich es gebraucht habe. Danach kann ich den Scrollviewer so definieren, wie ich die Höhe des Gitters steuern möchte. Danke für den SQL-Aufrufkommentar. – Cheddar