ListViewでプログラムでアイテムを選択する方法がわかりません。
リストビューのItemContainerGeneratorを使用しようとしていますが、機能していないようです。たとえば、次の操作の後、objはnullになります。
//VariableList is derived from BindingList
m_VariableList = getVariableList();
lstVariable_Selected.ItemsSource = m_VariableList;
var obj =
lstVariable_Selected.ItemContainerGenerator.ContainerFromItem(m_VariableList[0]);
私は(ここや他の場所で見られる提案に基づいて)ItemContainerGeneratorのStatusChangedイベントを使用しようとしましたが、役に立ちませんでした。イベントは発生しません。例えば:
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]);
}
この全体の要点は、ListViewでいくつかのアイテムを事前に選択したいということです。
何も残さないために、ListViewはいくつかのテンプレート機能とドラッグ/ドロップ機能を使用しているので、ここにXAMLを含めます。基本的に、このテンプレートは各アイテムをテキスト付きのテキストボックスにします。アイテムが選択されると、チェックボックスがオンになります。また、各アイテムの下に小さなグリフが表示され、新しいアイテムが挿入されます(これはすべて正常に機能します)。
<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"/>
だから私は何が欠けていますか?ListViewで1つ以上のアイテムをプログラムで選択するにはどうすればよいですか?