2009-04-20 5 views
5

Ho un ListBox che sta ottenendo nuovi elementi aggiunti tramite Databinding (ad esempio qualcosa viene aggiunto all'elenco e la casella si sta aggiornando per includere il nuovo elemento).Impostazione Focus su nuovi elementi nel controllo degli articoli

Gli elementi nella casella di riepilogo sono modelli di dati modificabili, quindi la domanda è: come si imposta lo stato attivo sul primo campo nel modello quando viene aggiunto un nuovo elemento?

Ho guardato allo this question e vedrò se riesco a raggiungermi da nessuna parte, ma non è una risposta diretta alla mia domanda.

risposta

7

La domanda a cui hai collegato dovrebbe funzionare per la tua situazione particolare. Finché si utilizza un ObservableCollection per la sorgente, è possibile impostare:

<ListBox IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding MyCollection}" ItemTemplate="{StaticResource MyTemplate}/> 

Questo farà in modo che quando vengono aggiunti elementi, messa a fuoco è dato alla nuova voce, poi il gestore di attivazione (date un'occhiata alla prima risposta in quel thread) dovrebbe focalizzarsi sul TextBox. L'articolo di MSDN fornisce un esempio utile, messo in un modello qui:

<DataTemplate x:Key="MyTemplate" DataType="{x:Type Classes:MyClass}">  
    <StackPanel FocusManager.FocusedElement="{Binding ElementName=firstButton}"> 
    <Button Name="firstButton" /> 
    </StackPanel> 
</DataTemplate> 
+0

Il mio problema in realtà diventa più complicato a causa della presenza di un UserControl nel modello di dati che richiede la gestione dell'evento messa a fuoco e di passarlo al testo vero e proprio scatola che voglio, ma le impostazioni qui mi hanno fatto abbastanza lontano per capirlo, grazie. –

+4

Potresti pubblicare il tuo codice nel caso in cui qualcun altro venga in cerca di qualcosa di simile. –