grazie per le risposte.
Quando si inserisce un punto di interruzione nell'evento SelectionChanged, si interrompe il procedimento prima che lo schermo sia completamente caricato. Vedrai anche che la prima riga è 'selezionata' in seguito sulla lista. Non sto legando a SelectedIndexValue come potete vedere nel codice. Il DataContext per l'elenco è ReadonlyCollection
Nel mio evento SelectionChanged, come è possibile vedere, notifico altri oggetti da caricare con i dati relativi all'elemento selezionato. Voglio solo che questo accada quando uno è selezionato ma non uno di default da impostare. Devo di queste ListViews che rappresentano dati simili ma su nessuno caricato deve avere un elemento selezionato.
Ho notato che l'indice di default selezionato è impostato su -1 nella finestra delle proprietà per Listview. Posso anche impostare questo codice nell'evento List_Loaded, ma a quel punto il primo SelectionChanged è già successo.
<ListView PreviewMouseDown="ActiveCasesView_MouseDown" x:Name="ActiveCasesView"
DataContext="{StaticResource ActiveCasesViewSource}"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource CasesItemTemplate}"
SelectionMode="Single"
SelectionChanged="ActiveCasesView_SelectionChanged"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto" >
</ListView>
private void ActiveCasesView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (mouseClicked)
if (e.AddedItems.Count > 0)
App.Messenger.NotifyColleagues(App.MSG_SELECT_ACTIVE_CASE, ((CaseViewModel)ActiveCasesView.SelectedItem).CaseNumber);
}
ho aggiunto il PreviewMouseDown per impostare un indicatore che ho cliccato sul listview in caso SelectionChanged. Questo aiuta ma non sono convinto che sia la soluzione migliore.
Grazie Petrus
Hey Petrus. Potresti per favore condividere il tuo codice? – Anvaka