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 ウィンドウには、Hierarchal Data Template を使用してデータを操作する 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 メソッドが呼び出されます。それで、それがすべて示されたので、ここに私の実際の質問があります。ウィンドウにいくつかのテキスト ボックスがあります。製品を選択するときに、選択した製品のデータをテキスト ボックスに入力したいと思います。選択された部門を無視するか、部門の実際の選択を完全に防止したいのですが、どちらの方法でも機能します。他にもいくつか試してみますが、ここからの回答を心配して待っています.

お時間をいただきありがとうございます。ご回答いただければ幸いです。

4

1 に答える 1

0

それで、私はこれで別の方向に進みました。

ツリービューは、データコンテキストとして独自のDataSetを取得します。次に、同じデータテンプレートと階層データテンプレートを使用して情報を表示します。次に、背後のコードで、TreeViewのSelectedValueChangedイベントが呼び出されたときに、選択されたDataRowViewのDataRowが適切なテーブルからのものであるかどうかを確認しました。そうである場合は、データベースから製品情報を取得し、実行時にコントロールのデータコンテキストに配置します。

于 2013-02-14T20:56:15.147 に答える