gpt4 book ai didi

silverlight - VisualTreeHelper.FindElementsInHostCoordinates 与 Canvas 中的矩形?永远找不到我的 UIElement

转载 作者:行者123 更新时间:2023-12-04 02:41:37 24 4
gpt4 key购买 nike

我试图从我的 Silverlight for WP7 应用程序中的坐标中找到 UIElement

这是我的 XAML:

<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>

<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>

<Canvas x:Name="ContentPanel" Grid.Row="1">
<Rectangle Canvas.Top="20" Canvas.Left="20" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />
<Rectangle Canvas.Top="90" Canvas.Left="20" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />
<Rectangle Canvas.Top="160" Canvas.Left="20" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />

<Rectangle Canvas.Top="20" Canvas.Left="90" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />
<Rectangle Canvas.Top="90" Canvas.Left="90" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />
<Rectangle Canvas.Top="160" Canvas.Left="90" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />

<Rectangle Canvas.Top="20" Canvas.Left="160" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />
<Rectangle Canvas.Top="90" Canvas.Left="160" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />
<Rectangle Canvas.Top="160" Canvas.Left="160" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />

<Rectangle Canvas.Top="20" Canvas.Left="230" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />
<Rectangle Canvas.Top="90" Canvas.Left="230" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />
<Rectangle Canvas.Top="160" Canvas.Left="230" Width="50" Height="50" Fill="Aqua" Tap="Rectangle_Tap" />
</Canvas>

和我的代码隐藏:

public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
}

private void Rectangle_Tap(object sender, GestureEventArgs e)
{
Rectangle r = (Rectangle)sender;

double x = (double)r.GetValue(Canvas.LeftProperty);
double y = (double)r.GetValue(Canvas.TopProperty);

Debug.WriteLine(x + "," + y);

var query = VisualTreeHelper.FindElementsInHostCoordinates(new Point(x - 70, y), ContentPanel).Union(
VisualTreeHelper.FindElementsInHostCoordinates(new Point(x + 70, y), ContentPanel)).Union(
VisualTreeHelper.FindElementsInHostCoordinates(new Point(x, y - 70), ContentPanel)).Union(
VisualTreeHelper.FindElementsInHostCoordinates(new Point(x, y + 70), ContentPanel)).Union(
VisualTreeHelper.FindElementsInHostCoordinates(new Point(x, y), ContentPanel));

foreach (UIElement element in query.OfType<Rectangle>())
{
// never goes here
ContentPanel.Children.Remove(element);
}
}
}

但问题是该方法永远不会返回我的矩形。

我的代码有什么问题?

在此先感谢您的帮助。最好的问候

最佳答案

我不确定这是否会返回正确的值(对你来说,因为你的问题不清楚),但你应该尝试以下操作

private void Rectangle_Tap(object sender, GestureEventArgs e)
{
Point position = e.GetPosition(Application.Current.RootVisual);

var query = VisualTreeHelper.FindElementsInHostCoordinates(new Point(position.X - 70, position.Y), Application.Current.RootVisual).Union(
VisualTreeHelper.FindElementsInHostCoordinates(new Point(position.X + 70, position.Y), Application.Current.RootVisual)).Union(
VisualTreeHelper.FindElementsInHostCoordinates(new Point(position.X, position.Y - 70), Application.Current.RootVisual)).Union(
VisualTreeHelper.FindElementsInHostCoordinates(new Point(position.X, position.Y + 70), Application.Current.RootVisual)).Union(
VisualTreeHelper.FindElementsInHostCoordinates(new Point(position.X, position.Y), Application.Current.RootVisual));

foreach (UIElement element in query.OfType<Rectangle>())
{
// never goes here
ContentPanel.Children.Remove(element);
}
}

我使用的资源:

VisualTreeHelper.FindElementsInHostCoordinates Method (Point, UIElement) GestureEventArgs.GetPosition Method

关于silverlight - VisualTreeHelper.FindElementsInHostCoordinates 与 Canvas 中的矩形?永远找不到我的 UIElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11159831/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com