Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置单击后StackPanel的位置与鼠标指针的位置相同 我有高度=200,宽度=200的WPF应用中的堆栈面板。 默认情况下它是不可见的。 我想使堆栈面板在左键单击时可见,并想设置其 位置与鼠标指针相同。_Wpf_Wpf Controls_Stackpanel - Fatal编程技术网

如何设置单击后StackPanel的位置与鼠标指针的位置相同 我有高度=200,宽度=200的WPF应用中的堆栈面板。 默认情况下它是不可见的。 我想使堆栈面板在左键单击时可见,并想设置其 位置与鼠标指针相同。

如何设置单击后StackPanel的位置与鼠标指针的位置相同 我有高度=200,宽度=200的WPF应用中的堆栈面板。 默认情况下它是不可见的。 我想使堆栈面板在左键单击时可见,并想设置其 位置与鼠标指针相同。,wpf,wpf-controls,stackpanel,Wpf,Wpf Controls,Stackpanel,谁能告诉我怎么做。谢谢:您可以通过处理MouseLeftButtonDown事件使其可见,并将StackPanel的可见性设置为可见。为了能够使用坐标显式地定位它,可以将它放在画布中,并处理画布的MouseLeftButtonDown事件。请参考以下示例代码 <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation

谁能告诉我怎么做。谢谢:

您可以通过处理MouseLeftButtonDown事件使其可见,并将StackPanel的可见性设置为可见。为了能够使用坐标显式地定位它,可以将它放在画布中,并处理画布的MouseLeftButtonDown事件。请参考以下示例代码

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication1"
        mc:Ignorable="d"
        Title="MainWindow" Height="700" Width="700">
    <Canvas x:Name="canvas" Background="Transparent" MouseLeftButtonDown="Canvas_MouseLeftButtonDown">
        <StackPanel x:Name="sp" Background="Yellow" Width="200" Height="200" Visibility="Hidden" />
    </Canvas>
</Window>


private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    Point point = e.GetPosition(canvas);
    Canvas.SetLeft(sp, point.X - sp.Width / 2);
    Canvas.SetTop(sp, point.Y - sp.Height / 2);
    sp.Visibility = Visibility.Visible;
}