Sélectionnez l'élément de programme dans WPF ListView

Je suis incapable de comprendre comment sélectionner un élément par programme dans une liste.

Je suis d'essayer d'utiliser la liste de ItemContainerGenerator, mais il ne semble tout simplement pas de travail. Par exemple, obj est nul après l'opération suivante:

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

J'ai essayé (sur la base de propositions vu ici et en d'autres lieux), l'utilisation de la ItemContainerGenerator de StatusChanged événement, mais en vain. L'événement se déclenche jamais. Par exemple:

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

Le nœud de toute cette affaire, c'est que je veux simplement pré-sélectionner quelques-uns des éléments dans ma Liste.

Dans l'intérêt de ne pas laisser quoi que ce soit, la liste utilise des gabarits et faites-le Glisser/Déposer, donc je suis, y compris le code XAML ici. Essentiellement, ce modèle fait chaque élément d'une zone de texte avec le texte - et lorsqu'un élément est sélectionné, la case est cochée. Et chaque élément obtient également un peu glyphe dessous pour insérer de nouveaux éléments (et ça fonctionne très 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"/>

Donc ce qui me manque? Comment puis-I du programme, sélectionnez un ou plusieurs éléments dans la liste?

InformationsquelleAutor Paul Prewett | 2009-07-01