题
我有一个 InkCanvas
在一个窗口,在我允许用户画笔、触摸或者鼠标。我还允许用户添加文字。用户水龙头一个"文本添加"按钮,那么,水龙头在哪里画布上他们希望他们的文本。文本框显的有,允许他们的类型。在进入或失去了重点,我创建了一个 ContentControl
和增加它 myInkCanvas.Children
.
我会喜欢的用户能够删除的文字,他们已经创建了当 InkCanvas
是在删除模式(I am使用 EraseByPoint
).我已经试图捕捉 MouseEnter
和 PreviewMouseMove
活动的内容的控制,但也似乎火灾。
是否有一个事件,我可以捕捉?是否有更好的办法来处理这种情况?它甚至有可能吗?
解决方案
你可以使用打测试用于这个目的
看看 在这里,
得到第一InkPresenter
public T GetVisualChild<T>(Visual parent) where T : Visual
{
T child = default(T);
int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < numVisuals; i++)
{
Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
child = v as T;
if (child == null)
{
child = GetVisualChild<T>(v);
}
if (child != null)
break;
}
return child;
}
InkPresenter inkPresenter = GetVisualChild<InkPresenter>(myInkCanvas);
然后得到HitTestResult的您的观点
HitTestResult hitTestResult = VisualTreeHelper.HitTest(inkPresenter, new Point(x, y));
然后你可以用 hitTestResult.VisualHit
除去这个目的
不隶属于 StackOverflow