1

みなさん、ご挨拶、英語でごめんなさい!私はリストボックスを持っています、それはItemsSource=myClientsList.DefaultViewです。ListBoxのアイテムには、別のリソースファイルので定義されているテンプレート(ControlTemplate)があります。すべてのアイテムには小さなTextBlockが含まれ、それぞれのTextプロパティには、オブジェクトmyClientsListのフィールドへのバインディングがあります。

このアイテムテンプレートにさらにTexBlockを追加する必要があり、それぞれが別のクラスmyOrdersListのフィールドにバインドされている必要があります。-(つまり、データベースのさまざまなテーブルからのリストボックス情報の各行を表示したいのですが、これは質問です)。

そのListBoxのItemsSourceにオブジェクトmyClientsListへのリンクがあり、myOrderListを同じListBoxのItemSourceに設定できないという問題。したがって、ControlTemplate内でTextBlock.DataContextを指定する方法、またはこの問題を別の方法で解決する方法を見つける必要がありますか?

ps私は.NetとWPFの初心者であり、おそらく私の説明に誤りがあります-申し訳ありません。

4

2 に答える 2

1

DataGridタイプの表示があり、特定のクライアントの注文情報を表示するために列を追加したいようです。この場合、いくつかのことを行う必要があります。まず、両方のエンティティの情報を1つのオブジェクトに格納する複合オブジェクトを作成する必要があります(したがって、コントロールの各行には、表示する必要のあるすべてのデータが含まれます)。次に、ListBoxItemをテンプレート化する代わりに、実際のDataGridコントロールを使用して行を表示することをお勧めします。フレームワークにGridViewが組み込まれているListViewは優れていないため、無料のオプションとしてWPFToolkitのDataGridをお勧めします。

于 2009-11-29T20:39:08.743 に答える
0

質問を理解した場合、ここには2つの問題があります。クライアントと注文の両方を含む単一のコレクションを作成する方法と、同じリストボックス内でクライアントと注文をさまざまな方法で表示する方法です。

最初の点に関しては、CompositeCollectionを使用してこれを行うことができます。

2つ目については、ControlTemplateの代わりに2つのDataTemplatesを定義します。各DataTemplateのキーとして、表示するオブジェクトのタイプを使用します。例:

<DataTemplate x:Key="{x:Type local:Client}">

または、ItemsControl.ItemTemplateSelectorを使用して、アイテムのタイプに応じて異なるDataTemplatesを明示的にポイントします。本当にControlTemplatesを使用する必要がある場合は、ItemsControl.ItemContainerStyleSelectorを確認してください。

于 2009-11-29T19:55:32.227 に答える