具有层次结构数据模板和树视图的数据绑定



我正在使用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,我使用层次结构数据模板来处理数据,它显示按部门排序的产品。以下是我使用的资源:

    <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方法。所以,现在所有这些都显示出来了,这是我的实际问题。我在窗口上有一些文本框,当我选择产品时,我希望文本框中填充所选产品的数据。我要么忽略任何被选中的部门,要么完全阻止对部门的实际选择,无论哪种方式都有效。我还将尝试其他一些事情,我焦急地等待着这里的任何答案。

谢谢你抽出时间,我很感激你能给我的任何答案。

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

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

最新更新