我目前正在开发一个Visual Studio扩展,需要在触发menuCommand后打开一个WPF表单。
我想相对于插入符号位置打开表单,所以我需要获得Caret的像素位置。 我查了This article
但它不起作用。
请帮忙吗?
答案 0 :(得分:2)
一旦你有了IWpfTextView,就可以view.TextViewLines.GetCaretBounds(view.Caret.Position.BufferPosition)
进行“文本坐标系”中的位置。通过view.ViewportTop / view.ViewportLeft进行调整应该为您提供相对于作为视图的UIElement的位置。从那里,view.VisualElement.PointToScreen可能会将它带到屏幕坐标。
我假设你已经发现你不想直接将这个UI嵌入到编辑器中?因为那(轻度)更容易。