2010-09-03 17 views
5

Estoy tratando de sincronizar el elemento de tabulación seleccionado de un control de tabulación WPF con el último elemento que se agregó.Detectando cuando se agregó un elemento de tabulación al control WPF Tab

Como no hay propiedades tales como p. Ej. IsSynchedWithLastAddedItem, estoy tratando de detectar cuándo se agregó un elemento para apuntar el SelectedItem al último agregado.

No puedo encontrar el evento que se levanta, ya sea en el control de pestañas o sus Elementos, cuando se agregó un TabItem.

Estoy seguro de que algo así debe existir, así que espero que alguien pueda ayudarme.

Respuesta

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

Si trabaja directamente con Items-collection, la misma técnica funcionará también. Obtenga CollectionViewSource por defecto para esta colección.

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

Como Timores escribió, para la m_tabControl.Items-propiedad, se puede adjuntar un controlador directamente. Lo mismo también es cierto para la mayoría de los ItemsSource-references, pero allí tienes que verificar la interfaz INotifyCollectionChanged.

No lo he probado. Haz un comentario si no funciona.

+0

Gracias, la segunda opción funcionó perfecta. El primero solo funcionará una vez que se haya configurado ItemsSource, por lo que no podrá usarlo en el constructor de la vista. La razón es que en ese momento el ItemsSource sigue siendo nulo y, por lo tanto, la vista predeterminada también lo es. –

+0

El segundo funciona para mí también. – torpederos

0

La colección de elementos es del tipo ItemCollection, que se deriva de CollectionView que implementa INotifyCollectionChanged. Para que pueda escuchar CollectionChanged y saber cuándo se agrega un artículo.

Sin embargo, no sé cómo hacer eso en XAML.

Cuestiones relacionadas