danke für die Antworten.
Wenn ich einen Breakpoint auf das SelectionChanged-Ereignis setze, unterbricht es dort den Prozess, bevor der Bildschirm vollständig geladen ist. Sie sehen auch, dass die erste Zeile danach in der Liste "ausgewählt" wird. Ich bin nicht an einen SelectedIndexValue gebunden, wie Sie im Code sehen können. Der DataContext für die Liste ist eine ReadonlyCollection
In meinem SelectionChanged-Ereignis, wie Sie sehen können, benachrichtige ich andere Objekte, die mit Daten geladen werden sollen, die sich auf das ausgewählte Element beziehen. Ich möchte nur, dass dies geschieht, wenn eine ausgewählt ist, aber keine Standardeinstellung. Ich habe von diesen ListViews, die ähnliche Daten darstellen, aber auf geladenen muss keines ein Element ausgewählt haben.
Ich habe festgestellt, dass der Standard-Selected-Index im Eigenschaftenfenster für die Listview auf -1 gesetzt ist. Ich kann sogar diesen Code auf dem List_Loaded-Ereignis setzen, aber bis dahin ist der erste SelectionChanged bereits passiert.
<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);
}
Ich habe die Preview einen Indikator zu setzen, dass ich auf der Listenansicht im Selection Ereignis geklickt haben. Das hilft, aber ich bin nicht davon überzeugt, dass es die beste Lösung ist.
Dank Petrus
Hey Petrus. Könnten Sie bitte Ihren Code teilen? – Anvaka