Seleccione el elemento programáticamente en WPF ListView

No puedo averiguar cómo seleccionar un elemento mediante programación en un ListView.

Estoy intentando usar el ItemContainerGenerator de listview, pero parece que no funciona. Por ejemplo, obj es nulo después de la siguiente operación:

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

He intentado (en base a las sugerencias que se han visto aquí y en otros lugares) usar el evento StatusChanged de ItemContainerGenerator, pero sin éxito. El evento nunca se dispara. Por ejemplo:

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]);
}

El quid de todo esto es que simplemente quiero preseleccionar algunos de los elementos en mi ListView.

Con el fin de no omitir nada, el ListView utiliza algunas funciones de creación de plantillas y arrastrar y soltar, por lo que estoy incluyendo el XAML aquí. Esencialmente, esta plantilla convierte a cada elemento en un cuadro de texto con algo de texto, y cuando se selecciona cualquier elemento, la casilla de verificación está marcada. Y cada elemento también tiene un pequeño glifo debajo para insertar nuevos elementos (y todo esto funciona bien):

<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"/>

Entonces, ¿qué me estoy perdiendo? ¿Cómo selecciono programáticamente uno o más de los elementos en el ListView?

Respuestas a la pregunta(3)

Su respuesta a la pregunta