我可以设置PlacementTarget
为ContextMenu
。它始终打开(通过Shift + F10)在列表框的中心。设置ContextMenu通过键盘打开的PlacementTarget WPF
我想:
private void listBox_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.KeyboardDevice.Modifiers == ModifierKeys.Shift &&
(e.Key == Key.F10 || e.SystemKey == Key.F10)){
var listBox = sender as System.Windows.Controls.ListBox;
listBox.ContextMenu.PlacementTarget = listBox.ItemContainerGenerator.ContainerFromItem(listBox.SelectedItem) as ListBoxItem;
}
}
和
private void listBox_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
var listBox = sender as System.Windows.Controls.ListBox;
listBox.ContextMenu.PlacementTarget = listBox.ItemContainerGenerator.ContainerFromItem(listBox.SelectedItem) as ListBoxItem;
}
但它仍然不能按预期工作。 (我期望它显示在选定的itemlistbox的中心)
有什么建议吗?
你能告诉更确切的是什么问题吗?有什么异常?或者只是ContextMenu仍然显示在中心? – 2014-10-30 08:10:04
仍然显示在列表框的中心,但我期望在选定listboxitem的中心 – maskalek 2014-10-30 08:20:29