2010-09-03 10 views
5

Próbuję zsynchronizować wybrany element karty kontrolki karty WPF z ostatnio dodanym elementem.Wykrywanie, kiedy element karty został dodany do elementu sterującego zakładki WPF

Ponieważ nie ma takiej właściwości jak np. IsSynchedWithLastAddedItem, próbuję wykryć, kiedy element został dodany w celu wskazania SelectedItem na ostatnio dodane.

Nie mogę znaleźć zdarzenia, które zostanie podniesione - na karcie kontroli lub jej elementach, po dodaniu elementu TabItem.

Jestem pewien, że coś takiego musi istnieć, więc mam nadzieję, że ktoś może mi pomóc.

Odpowiedz

9
var view=CollectionViewSource.GetDefaultView(m_tabControl.ItemsSource); 
view.CollectionChanged+=(o,e)=>{/*Here your code*/}; 

Jeśli pracujesz bezpośrednio z kolekcją Przedmiotów, ta sama technika zadziała. Uzyskaj domyślny CollectionViewSource dla tej kolekcji.

var view=CollectionViewSource.GetDefaultView(m_tabControl.Items); 
view.CollectionChanged+=(o,e)=>{/*Here your code*/}; 

Jak Timores pisał dla m_tabControl.Items-mienia, można podłączyć bezpośrednio do obsługi. To samo odnosi się również do większości odnośników do ItemsSource, ale musisz sprawdzić się w interfejsie INotifyCollectionChanged.

Nie testowałem tego. Napisz komentarz, jeśli to nie zadziała.

+0

Dzięki, druga opcja działała idealnie. Pierwszy będzie działał tylko po ustawieniu ItemsSource, więc nie będzie można go użyć w konstruktorze widoku. Powodem jest to, że w tym miejscu zasób ItemsSource wciąż ma wartość NULL, a zatem domyślny jest również widok. –

+0

Drugi działa także dla mnie. – torpederos

0

Kolekcja Przedmiotów jest typu ItemCollection, który pochodzi z CollectionView, który implementuje INotifyCollectionChanged. Możesz więc słuchać CollectionChanged i dowiedzieć się, kiedy element zostanie dodany.

Nie wiem, jak to zrobić w XAML.

Powiązane problemy