Wählen Sie das Element programmgesteuert in WPF ListView aus

Ich kann nicht herausfinden, wie ein Element in einer ListView programmgesteuert ausgewählt wird.

Ich versuche, den ItemContainerGenerator der Listenansicht zu verwenden, aber es scheint einfach nicht zu funktionieren. Zum Beispiel ist obj nach der folgenden Operation null:

//VariableList is derived from BindingList
m_VariableList = getVariableList();
lstVariable_Selected.ItemsSource = m_VariableList;
var obj = 
    lstVariable_Selected.ItemContainerGenerator.ContainerFromItem(m_VariableList[0]);

Ich habe versucht (basierend auf den hier und an anderen Stellen gezeigten Vorschlägen), das StatusChanged-Ereignis von ItemContainerGenerator zu verwenden, aber ohne Erfolg. Das Ereignis wird nie ausgelöst. Zum Beispiel:

m_VariableList = getVariableList();
lstVariable_Selected.ItemContainerGenerator.StatusChanged += new EventHandler(ItemContainerGenerator_StatusChanged);
lstVariable_Selected.ItemsSource = m_VariableList;

...

void ItemContainerGenerator_StatusChanged(object sender, EventArgs e)
{
    //This code never gets called
    var obj = lstVariable_Selected.ItemContainerGenerator.ContainerFromItem(m_VariableList[0]);
}

Der springende Punkt bei dieser ganzen Sache ist, dass ich einfach einige der Elemente in meiner ListView vorauswählen möchte.

Um nichts auszulassen, verwendet die ListView einige Vorlagen- und Drag / Drop-Funktionen. Daher beziehe ich hier die XAML ein. Im Wesentlichen macht diese Vorlage jedes Element zu einem Textfeld. Wenn ein Element ausgewählt ist, wird das Kontrollkästchen aktiviert. Und jedes Element erhält auch eine kleine Glyphe, um neue Elemente einzufügen (und alles funktioniert einwandfrei):

<DataTemplate x:Key="ItemDataTemplate_Variable">
<StackPanel>
    <CheckBox x:Name="checkbox"
        Content="{Binding Path=ListBoxDisplayName}"
        IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
    <Image ToolTip="Insert Custom Variable" Source="..\..\Resources\Arrow_Right.gif" 
        HorizontalAlignment="Left" 
        MouseLeftButtonDown="OnInsertCustomVariable"
        Cursor="Hand" Margin="1, 0, 0, 2" Uid="{Binding Path=CmiOrder}" />
</StackPanel>
</DataTemplate>

...

<ListView Name="lstVariable_All" MinWidth="300" Margin="5"
   SelectionMode="Multiple"
   ItemTemplate="{StaticResource ItemDataTemplate_Variable}"
   SelectionChanged="lstVariable_All_SelectionChanged"
   wpfui:DragDropHelper.IsDropTarget="True" 
   wpfui:DragDropHelper.IsDragSource="True"
   wpfui:DragDropHelper.DragDropTemplate="{StaticResource ItemDataTemplate_Variable}"
       wpfui:DragDropHelper.ItemDropped="OnItemDropped"/>

Also, was fehle ich? Wie wähle ich programmgesteuert eines oder mehrere Elemente in der ListView aus?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage