我正在开发一个与 Access 2000 数据库对话的简单 WPF 应用程序。我过去使用过实体框架,但似乎我受限于 Access 数据库。我设法生成了一个 DataSet xsd 文件,其中包含每个表的映射以及表之间的关系。架构如下所示:
要将数据绑定到 WPF 数据网格,我将 DataContext 设置为 DataSet,然后从各种表适配器填充它。我在后面的 WPF 代码中使用以下 C# 来实现这一点:
public partial class MainWindow : Window
{
private TillDataSet ds = new TillDataSet();
private TransactionTableAdapter transactionDa = new TransactionTableAdapter();
private DentistTableAdapter dentistDa = new DentistTableAdapter();
private Transaction_TypeTableAdapter transactionTypeDa = new Transaction_TypeTableAdapter();
private Payment_MethodTableAdapter paymentMethodDa = new Payment_MethodTableAdapter();
public MainWindow()
{
InitializeComponent();
}
private void fillDataAdapters()
{
transactionDa.Fill(ds.Transaction);
dentistDa.Fill(ds.Dentist);
transactionTypeDa.Fill(ds.Transaction_Type);
paymentMethodDa.Fill(ds.Payment_Method);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
fillDataAdapters();
this.DataContext = ds;
}
}
我想显示一个 WPF 数据网格,其中包含事务表中的详细信息。我能够从事务表中检索基本详细信息。我想要实现的是能够导航表具有的关系,以便我可以显示牙医名称,而不是外键值。我尝试了以下 XAML:
<!--Transaction List-->
<DataGrid Grid.Row="1" Grid.Column="1" Name="dtgTransactions" AutoGenerateColumns="False" IsReadOnly="True" Margin="10" ItemsSource="{Binding Transaction}">
<DataGrid.Columns>
<DataGridTextColumn Header="Date" Binding="{Binding Trans_Date}" />
<DataGridTextColumn Header="Type" Binding="{Binding Type}" />
<DataGridTextColumn Header="Dentist" Binding="{Binding Dentist.Dentist_Name}"/>
<DataGridTextColumn Header="Payment Method" Binding="{Binding Method}" />
</DataGrid.Columns>
</DataGrid>
注意 Dentist 列下的绑定。当我尝试这个时,我得到一个空的数据列。如何使用 XAML 导航关系?