问题描述
我有一个学校作业:双击ListViewItem时,它的内容必须显示在MessageBox中。我已经在互联网上进行了大量研究,找不到适合我问题的解决方案。获取ListViewItem内容的最简单方法是什么?
ListView看起来像这样:
<ListView Name="LV">
<ListViewItem>a listview</ListViewItem>
<ListViewItem >with several</ListViewItem>
<ListViewItem>items</ListViewItem>
</ListView>
解决方法
当您将ListViewItem实例明确分配给ListView时(如问题中的示例所示),可以通过其Content
属性来获取每个ListViewItem的内容。
您可以在MouseDoubleClick
事件处理程序中访问它。
<ListView x:Name="LV" MouseDoubleClick="LV_MouseDoubleClick">
<ListViewItem>a listview</ListViewItem>
<ListViewItem>with several</ListViewItem>
<ListViewItem>items</ListViewItem>
</ListView>
代码背后的事件处理程序:
private void LV_MouseDoubleClick(object sender,MouseButtonEventArgs e)
{
var item = (ListViewItem)LV.SelectedItem;
var content = (string)item.Content;
MessageBox.Show(content);
}
但是,有一种更好的方法来获取Content
中的SelectedItem
。
设置SelectedValuePath
属性
<ListView x:Name="LV" MouseDoubleClick="LV_MouseDoubleClick"
SelectedValuePath="Content">
<ListViewItem>a listview</ListViewItem>
<ListViewItem>with several</ListViewItem>
<ListViewItem>items</ListViewItem>
</ListView>
并在后面的代码中获得SelectedValue
:
private void LV_MouseDoubleClick(object sender,MouseButtonEventArgs e)
{
var content = (string)LV.SelectedValue;
MessageBox.Show(content);
}
请注意,您的ListView应该是ListBox,即ListView的基类。您还必须在设置ListView的View
属性的情况下使用ListView。
使用GotFocus事件,您可以编写代码以在每次发生焦点时执行选定的值。
LV.Items [listIndex + 1] .ToString()->由于它开头包含System.Windows.Control.ListviewItem:文本,因此我用SubString删除了本文。
SELECT c.name,count(*) as total_member
FROM communities c join community_members cm on c.community_id=cm.community_id
group by c.name
order by total_number desc