簡體   English   中英

WPF TextBlock.IsHitTestVisible似乎不起作用

[英]WPF TextBlock.IsHitTestVisible doesn't seem to work

也許我誤會了它的工作方式,但是從我讀到的所有內容來看,據我了解,將IsHitTestVisible屬性設置為false應該實質上使該元素對鼠標事件“不可見”,並且MSDN指出該屬性“聲明是否該元素可能會作為點擊測試結果返回”。

我有一個過程生成的Grid,每個單元格都包含一個Border,每個Border的子級都是一個TextBlock。

這就是我創建單元格的方式:

var cellBorder = new Border { BorderBrush = Brushes.LightGray, Background = Brushes.WhiteSmoke, BorderThickness = thickness };
var label = new TextBlock { Text = time.ToShortTimeString(), Foreground = Brushes.Tomato, IsHitTestVisible = false };
cellBorder.Child = label;
_grid.Children.Add(cellBorder);
Grid.SetColumn(cellBorder, j);
Grid.SetRow(cellBorder, i);

在DragMove事件處理程序中,我想更改當前單元格的背景顏色。 在將TextBlock添加到邊框之前,此方法工作正常。 看起來像這樣:

    void _grid_DragOver(object sender, DragEventArgs e)
    {
        var pos = e.GetPosition(_grid);
        var result = VisualTreeHelper.HitTest(_grid, pos);

        if (result != null)
        {
            var border = result.VisualHit as Border;
            if (border != null)
                border.Background = Brushes.LightYellow;
            else if (result.VisualHit is TextBlock)
                Console.WriteLine("Textblock hit");  // Why is this happening?
        }
    }

TextBlock從命中測試中返回。 為什么?

VisualTreeHelper不考慮IsHitTestVisible

如果要從對VisualTreeHelper的命中測試中忽略TextBlock ,則應將篩選器回調傳遞給HitTest()

暫無
暫無

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

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