簡體   English   中英

如何禁用選擇InkCanvas的特定子項的可能性?

[英]How to disable possibility to select particular child of InkCanvas?

我正在使用InkCanvas並且試圖禁用對其特定子項的選擇。 InkCanvas子級集合由EliipsePath對象組成,我想禁用選擇所有Path對象的可能性。 我試圖通過檢查鼠標是否在PreviewMouseLeftButtonDown事件處理程序中擊中了特定對象來實現它:

private void myCanvas_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
        Point downPosition = e.GetPosition(myCanvas);
        UIElement element = myPath;
        if (myCanvas.InputHitTest(downPosition) == element) e.Handled = true;
}

現在我知道它不起作用,因為InputHitTest函數返回InkCanvas選擇裝飾器,如果我再單擊一次對象,則上面的函數已經被選中時(至少InputHitTest返回了我感興趣的對象)。 您知道如何進行這項工作嗎?

到目前為止,我看到的是您希望在單擊畫布時不選擇特定的子畫布

因此,假設您有一個名為myPath的路徑

private void InkCanvas_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    Point downPosition = e.GetPosition(myPath);
    if (myPath.InputHitTest(downPosition) == myPath) 
        e.Handled = true;
}

因此,直接在路徑上進行命中測試,看看它是否返回自身,則可以確定對路徑的單擊,然后通過設置e.Handled = true來使事件消耗掉,因此將不會選擇該元素。

替代方法將使用null進行測試,這將具有與上述相同的行為,因此取決於選擇

    if (myPath.InputHitTest(downPosition) != null) 
        e.Handled = true;

我基於假設提出了上述解決方案,如果這不是您想要的,請您糾正我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM