【发布时间】:2020-07-13 23:11:13
【问题描述】:
我正在尝试使用 WPF 而不是 Windows 窗体来使用相同的教程,但我一生都无法让它在 Datagrid 中显示数据库数据。除了 PresentationTier 之外,我的所有代码都是相同的(但使用我自己的数据库数据)。我的 .xaml 代码是(主要是从“数据源”选项卡中拖动表格的默认设置):
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:DataEntityTier="clr-namespace:DataEntityTier;assembly=DataEntityTier"
x:Class="PresentationTier.ViewProducts"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
Title="Worker-ViewProducts" Background="White" Loaded="Page_Loaded">
<Page.Resources>
<DataEntityTier:WMSDataSet x:Key="wMSDataSet"/>
<CollectionViewSource x:Key="productsViewSource" Source="{Binding products, Source={StaticResource wMSDataSet}}"/>
<CollectionViewSource x:Key="warehousesViewSource" Source="{Binding warehouses, Source={StaticResource wMSDataSet}}"/>
</Page.Resources>
<Grid Margin="10" DataContext="{StaticResource productsViewSource}">
<DataGrid x:Name="productsDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding Source={StaticResource productsViewSource}}" Margin="165,230,215,0" RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.Columns>
<DataGridTextColumn x:Name="product_idColumn" Binding="{Binding product_id}" Header="product id" IsReadOnly="True" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="account_idColumn" Binding="{Binding account_id}" Header="account id" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="titleColumn" Binding="{Binding title}" Header="title" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="skuColumn" Binding="{Binding sku}" Header="sku" Width="SizeToHeader"/>
</DataGrid.Columns>
</DataGrid>
<DataGrid x:Name="warehousesDataGrid" AutoGenerateColumns="False" EnableRowVirtualization="True" ItemsSource="{Binding Source={StaticResource warehousesViewSource}}" Margin="165,0,215,230" RowDetailsVisibilityMode="VisibleWhenSelected">
<DataGrid.Columns>
<DataGridTextColumn x:Name="warehouse_idColumn" Binding="{Binding warehouse_id}" Header="warehouse id" IsReadOnly="True" Width="SizeToHeader"/>
<DataGridTextColumn x:Name="nameColumn" Binding="{Binding name}" Header="name" Width="SizeToHeader"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Page>
而我的 xaml.cs 代码是:
using DataEntityTier;
using System.Windows;
using System.Windows.Controls;
namespace PresentationTier
{
public partial class ViewProducts : Page
{
WMSDataSet wMSDataSet;
public ViewProducts()
{
InitializeComponent();
Loaded += Page_Loaded;
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
wMSDataSet = new WMSDataSet();
ServiceReference1.Service1Client DataSvc = new ServiceReference1.Service1Client();
wMSDataSet.products.Merge(DataSvc.GetProducts());
wMSDataSet.warehouses.Merge(DataSvc.GetWarehouses());
}
}
}
【问题讨论】:
标签: c# .net wpf wcf n-tier-architecture