wpf 获取列表视图中所选项目的屏幕位置
wpf get screen position of selected item in listview
在列表视图的 mouseup 事件中,如何获取所选项目的屏幕位置?我可以获得列表视图本身 (.pointtoscreen) 的屏幕位置,但找不到确定所选项目的屏幕位置的方法。
我查看了其他 SO 文章,但没有在列表视图中找到任何特定于项目的内容。
您可以处理 ListBox.SelectionChanged
事件(或 Selector.Selected
)。然后获取选中项的容器,计算其坐标:
partial class MainWindow : Window
{
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var listBox = sender as ListBox;
var selectedItemContainer = listBox.ItemContainerGenerator.ContainerFromItem(listBox.SelectedItem) as UIElement;
var pointOnSelectedItem = new Point(); // top-left corner
var pointOnScreen = selectedItemContainer.PointToScreen(pointOnSelectedItem);
var pointRelativeToWindow = selectedItemContainer.TranslatePoint(pointOnSelectedItem, this);
}
}
在列表视图的 mouseup 事件中,如何获取所选项目的屏幕位置?我可以获得列表视图本身 (.pointtoscreen) 的屏幕位置,但找不到确定所选项目的屏幕位置的方法。
我查看了其他 SO 文章,但没有在列表视图中找到任何特定于项目的内容。
您可以处理 ListBox.SelectionChanged
事件(或 Selector.Selected
)。然后获取选中项的容器,计算其坐标:
partial class MainWindow : Window
{
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var listBox = sender as ListBox;
var selectedItemContainer = listBox.ItemContainerGenerator.ContainerFromItem(listBox.SelectedItem) as UIElement;
var pointOnSelectedItem = new Point(); // top-left corner
var pointOnScreen = selectedItemContainer.PointToScreen(pointOnSelectedItem);
var pointRelativeToWindow = selectedItemContainer.TranslatePoint(pointOnSelectedItem, this);
}
}