2012-03-08 26 views
4

私はリストにバインドされたタブがあるTabControlの持っている:のTabItemのインスタンスを見つけることができますどのようにItemsSourceをリストにバインドしたTabControlでTabItemを取得するにはどうすればよいですか?

<TabControl ItemsSource="{Binding SomeList}" /> 

を?私はTabControl.Itemsリストを見ることを提案する他の答えを見つけましたが、それはFoosでいっぱいです。何か案が?

+0

を述べたように、あなたがItemContainerGeneratorを使用することができます任意の助けのItemTemplateにを使用しているのですか? – alf

答えて

6

その質問はかなり頻繁に尋ねられ、答えは常にです:しないでください。あなたが変更するために必要なすべてをバインドする必要がありますので、あなたがTabItemインスタンスを必要としないはず理論的には

。 (理論的には、ItemContainerGeneratorを使用してインスタンスを取得することもできます)

+0

私はいくつかのtabitemsの可視性が崩壊に切り替わるかもしれないように、tabcontrolをバインドしました。それが選択されたタブの場合、タブが選択されていないようなタブコントロールが表示されます。私はそのような状況で決して終わらないようにしたいと思います。私は、より拘束力のあるソリューションを考え出すことができるかどうかを見ていきます。 –

+0

必要なタブコンテンツ内のコントロールの場合はどうなりますか?たとえば、タブ2には、選択したアイテムを取得したいリストボックスコントロールがありますか?別のバインドされたコレクションに基づいてタブが生成された場合、必ずしも選択したアイテムをビューモデルのコレクションにバインドすることはできません。または私はできますか? – Sinaesthetic

+0

@Sinaesthetic:個々のアイテムのIsSelectedプロパティをアイテムのモデル/ビューモデルにバインドすることで、選択したアイテムを一般にバインドします。次に、バインドされたプロパティでコレクションをフィルタリングします。 –

1

私はwpfのツリービューに同様の問題がありました。私はItemContainerGeneratorを使って解決しました。あなたが私の解決策を見てもらいたいのであれば、おそらくあなたの問題に役立ちます。How to select a databound TreeViewItem?

しかし、私はH.Bと思っています。 "[..]必要なものすべてをバインドする必要があるため、TabItemインスタンスは必要ありません[..]"

6

たとえば、SelectedItemに関連する実際のTabItemを取得する必要がある場合(バインドされたオブジェクトである)HBが

var tabItem = this.ItemContainerGenerator.ContainerFromItem(selectedObject); 
+3

本当にありがとうございました。私の場合は、ユーザーがそれらのいずれかを変更したときに、他のタブを無効にしたい(コンテンツを無効にしないで)。 –

関連する問題