2017-01-12 1 views

Répondre

1

Vous pouvez le rendre visible en gérant l'événement MouseLeftButtonDown et définir la visibilité du StackPanel sur Visible. Pour que vous puissiez le positionner explicitement à l'aide de coordonnées, vous pouvez le placer dans un canevas et gérer l'événement MouseLeftButtonDown pour le canevas. Reportez-vous à l'exemple de code suivant.

<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; 
} 
+0

Merci @ mm8, ça marche pour moi :) – pankaj