在Wrappanel中选择项目或根据X和Y坐标列出

时间:2013-11-05 22:34:31

标签: c# wpf wpf-controls leap-motion

我有一个带有图像的包装面板。我正在使用指点设备,可以在屏幕上获得X和Y坐标。我想使用X和Y坐标来选择WrapPanel或List中的特定项目。

<WrapPanel HorizontalAlignment="Center" VerticalAlignment="Top" Grid.Row="1" Name="ImageWrap">
    <ContentControl Style="{StaticResource imageContainerStyle}">
        <Image Stretch="Uniform" Source="/Images/Texture01.jpg" />
    </ContentControl>
    <ContentControl Style="{StaticResource imageContainerStyle}">
        <Image Stretch="Uniform" Source="/Images/Texture02.jpg" />
    </ContentControl>
    <ContentControl Style="{StaticResource imageContainerStyle}">
        <Image Stretch="Uniform" Source="/Images/Texture03.jpg" />
    </ContentControl>
</WrapPanel>

我正在尝试使用的C#代码。但是不起作用

Point mousePosition = new Point(xPosition, yPosition);
Point localPoint = this.ImageWrap.PointToScreen(mousePosition);

请提供建议。

1 个答案:

答案 0 :(得分:1)

您可以使用面板的InputHitTest方法。只要您没有设置面板的Background属性,它将返回给定位置的元素(相对于面板的坐标)或null

Point screenPosition = new Point(xPosition, yPosition);
Point panelPosition = ImageWrap.PointFromScreen(screenPosition); // not PointToScreen
IInputElement element = ImageWrap.InputHitTest(panelPosition);

if (element is Image)
{
    ...
}