0

我正在使用 Microsoft Access 和 WPF 开发 ERP 类型系统。我对如何将信息绑定到某些文本框和树视图选择有一些疑问。所以,在我问这个问题之前,让我提供一下我已经做过的事情的背景。

我的数据库中有以下表格:

Table: tbl_Vendors
Column: ID - Autonumber
Column: Name - string(75)

Table: tbl_Departments
Column: ID - Autonumber
Column: Name - string(100)

Table: tbl_Products
Column: ID - Autonumber
Column: Department - Number (linked to tbl_Departments.ID)
Column: Description - string(255)
Column: UPC - string(12)
Column: Price - currency

Table: tbl_Product_Vendor_Cost
Column: VendorID - number (linked to tbl_Vendors.ID)
Column: ProductID - number (linked to tbl_Products.ID)
Column: Cost - Currency

在我的 XAML 窗口上,我有一个 Treeview,我使用 Hierarchal Data Template 来处理数据,它显示按部门排序的产品。以下是我使用的资源:

    <Window.Resources>
        <!-- The data template for the products-->
        <DataTemplate x:Key="productTemplate">
            <TextBlock Text="{Binding Name}"/>
        </DataTemplate>

        <!-- The data template for the departments-->
        <HierarchicalDataTemplate x:Key="treeViewTemplate" ItemsSource="{Binding Department2Product}" ItemTemplate="{StaticResource productTemplate}">
            <TextBlock Text="{Binding Name}"/>
        </HierarchicalDataTemplate>
    </Window.Resources>

在窗口的 XAML 文件中,我有这样的树视图调用:

<TreeView Name="lstProducts" ItemsSource="{Binding tbl_Departments}" ItemTemplate="{StaticResource treeViewTemplate}" AlternationCount="2" SelectedValuePath="ID"/>

在窗口的 .cs 文件中,我定义了以下方法:

Public void UpdateUI() {
    DataSet outResult;
    If (ProductsDatabase.TryToGetProductsDataset(out outResult)) {
        this.tvwProducts.DataContext = outResult;
    }
}

每当对产品进行更改或运行 InitializeComponent 方法时,都会调用 UpdateUI 方法。所以,现在这一切都显示出来了,这是我的实际问题。我在窗口上有一些文本框,当我选择一个产品时,我希望文本框填充来自所选产品的数据。我要么想忽略任何选择的部门,要么完全阻止部门的实际选择,无论哪种方式都有效。我将尝试其他一些事情,并焦急地等待这里的任何答案。

感谢您的时间,我很感激可以给出的任何答案。

4

1 回答 1

0

所以,我走了一个不同的方向。

树视图获取它自己的数据集作为它的数据上下文。然后我使用相同的数据模板和分层数据模板来显示信息。然后,在后面的代码中,我只是确保在调用 TreeView 的 SelectedValueChanged 事件时,我检查所选 DataRowView 的 DataRow 是否来自正确的表。如果是,那么我从数据库中提取产品信息,并在运行时将其放入控件的数据上下文中。

于 2013-02-14T20:56:15.147 回答