0
<Border Name="firstborder"
Grid.Column="0"
Grid.Row="0"
BorderBrush="Black"
BorderThickness="1">
</Border>
<Border Name="secondborder"
Grid.Column="1"
Grid.Row="0"
BorderBrush="Black"
BorderThickness="1">
</Border>
<Border Name="thirdborder"
Grid.Column="0"
Grid.Row="1"
BorderBrush="Black"
BorderThickness="1">
</Border>
<Border Name="fourthborder"
Grid.Column="1"
Grid.Row="1"
BorderBrush="Black"
BorderThickness="1">
</Border>
我有上述四個Border對象。我想使用視覺命中測試來確定我點擊了哪一個。究竟我點擊了哪個對象?
// Clear the contents of the list used for hit test results.
hitResultsList.Clear();
// Set up a callback to receive the hit test result enumeration.
VisualTreeHelper.HitTest(this, null,
new HitTestResultCallback(MyHitTestResult),
new PointHitTestParameters(point));
// Perform actions on the hit test results list.
if (hitResultsList.Count > 0)
{
Console.WriteLine("Number of Visuals Hit: " + hitResultsList.Count);
}
Visual visual = hitResultsList[1];
Console.WriteLine("To string " + visual.ToString());
if (visual.Equals(secondborder))
Console.WriteLine("2nd border ");
if (visual.Equals(firstborder))
Console.WriteLine("first border ");
if (visual.Equals(thirdborder))
Console.WriteLine("third border ");
if (visual.Equals(fourthborder))
Console.WriteLine("4th border ");
調試器告訴我,視覺命中測試在hitResultsList [1]中返回了一個Border元素。現在我只想確定四個Border對象中哪一個是它。我怎樣才能做到這一點?
爲什麼不能將hitResultsList [1]投射到邊界? ((Border)hitResultsList [1])。名稱會給你這個邊界的名稱 – VMaleev
有沒有什麼特別的原因讓你點擊鼠標來測試點?你知道,用WPF你不必做任何這個,對吧? –
不,我是WPF的新手,請告知更好的方法來做到這一點 – user2192101