2013-02-14 80 views
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,它显示的产品,通过排序部。下面是我使用的资源:

<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; 
    } 
} 

的UpdateUI方法每当改变对设备进行的被调用时,或每当InitializeComponent方法运行为好。所以,现在这一切都表明,这是我的实际问题。我在窗口上有一些文本框,当我选择一个产品时,我希望文本框填充选定产品的数据。我想要忽略任何被选中的部门,或者完全阻止部门的实际选择,无论哪种方式都行得通。我会尝试一些其他的事情,以及我焦急地等待来自这里的任何答案。

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

回答

0

所以,我对此采取了不同的方向。

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