Wählen Sie den Menüpunkt programmgesteuert in WPF-ListView

Ich bin nicht in der Lage, herauszufinden, wie zu wählen Sie ein Element programmgesteuert in einer ListView.

Ich bin versucht, die listview ItemContainerGenerator, aber es scheint einfach nicht zu funktionieren. Zum Beispiel, obj ist null nach der folgenden operation:

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

Ich versucht habe (anhand der Vorschläge sehen hier und an anderen Orten) zu verwenden, die ItemContainerGenerator das StatusChanged-Ereignis, 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]);
}

Den Kern dieser ganzen Sache ist, dass ich möchte einfach vor, wählen Sie ein paar Sachen in meine ListView.

Im Interesse nicht aus etwas heraus, das ListView verwendet, einige templates und Drag/Drop-Funktionalität, also ich bin auch der XAML-Code hier. Im wesentlichen werden in dieser Vorlage macht jedes Element eine textbox mit text - und wenn ein beliebiges Element ausgewählt ist, wird das Kontrollkästchen aktiviert ist. Und jeder Eintrag erhält auch eine kleine Glyphe ' darunter einfügen neuer Elemente (und diese alle funktioniert):

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

So was bin ich? Wie kann ich programmgesteuert wählen Sie eines oder mehrere der Elemente in der ListView?

InformationsquelleAutor Paul Prewett | 2009-07-01
Schreibe einen Kommentar