将多个滚动数据表放入堆栈面板 WPF 上的网格中
Place multiple scrolling data tables into a grid on a stack panel WPF
我是 WPF 的新手,XAML 来自 VB.NET 和 WinForms,所以如果 post 关闭,我深表歉意。我正在尝试将多个 sql 绑定数据 table 设置到一个包含网格的堆栈面板中。堆栈面板有一个网格,然后我希望在其中放置多个数据 table,这样它将是一个 "row" 的数据 table。我 运行 遇到了一个问题,其中每个数据 table 的条目数多于数据 table 的条目数 space 并且没有滚动条。我尝试使用滚动查看器但没有成功,到目前为止我发现的所有 post 都无法帮助我,因为它们会迫使我重新创建我的 xaml 树。到目前为止,这是我的代码。
------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;
所以在 XML 中你可以看到我有一个带有位置的文本块,然后在下一个 "Row" 下我将设置多个数据 tables,希望沿着网格。有帮助吗?
您在这里问了一个非常宽泛的问题。我认为你应该对 MVVM 做一些研究。它有助于构建 WPF 设计。一般的想法是将 XAML(在视图中)中的元素绑定到 ViewModel 中的 public 属性。然后对 属性 的更改会导致对元素的更改,从而导致 UI 的更改。模型包含数据并将关注从数据库中获取数据。在绑定到 Datagrid 的 ViewModel 中,您可能会有一个 属性 类型的 ObservableCollection。 ViewModel 将从模型中填充 ObservableCollection。使用 MVVM,您几乎没有代码。关于您的 "SQL command fill" 的一条评论,我假设这是在您的代码后面。您需要引用 DGLine2HotParts.Datacontext 或 DGLine2HotParts.ItemSource 才能将数据添加到网格中。这是试图为您指出一个特定的方向,而不是一个全面的答案。
我是 WPF 的新手,XAML 来自 VB.NET 和 WinForms,所以如果 post 关闭,我深表歉意。我正在尝试将多个 sql 绑定数据 table 设置到一个包含网格的堆栈面板中。堆栈面板有一个网格,然后我希望在其中放置多个数据 table,这样它将是一个 "row" 的数据 table。我 运行 遇到了一个问题,其中每个数据 table 的条目数多于数据 table 的条目数 space 并且没有滚动条。我尝试使用滚动查看器但没有成功,到目前为止我发现的所有 post 都无法帮助我,因为它们会迫使我重新创建我的 xaml 树。到目前为止,这是我的代码。
------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;
所以在 XML 中你可以看到我有一个带有位置的文本块,然后在下一个 "Row" 下我将设置多个数据 tables,希望沿着网格。有帮助吗?
您在这里问了一个非常宽泛的问题。我认为你应该对 MVVM 做一些研究。它有助于构建 WPF 设计。一般的想法是将 XAML(在视图中)中的元素绑定到 ViewModel 中的 public 属性。然后对 属性 的更改会导致对元素的更改,从而导致 UI 的更改。模型包含数据并将关注从数据库中获取数据。在绑定到 Datagrid 的 ViewModel 中,您可能会有一个 属性 类型的 ObservableCollection。 ViewModel 将从模型中填充 ObservableCollection。使用 MVVM,您几乎没有代码。关于您的 "SQL command fill" 的一条评论,我假设这是在您的代码后面。您需要引用 DGLine2HotParts.Datacontext 或 DGLine2HotParts.ItemSource 才能将数据添加到网格中。这是试图为您指出一个特定的方向,而不是一个全面的答案。