【发布时间】:2015-08-12 10:48:55
【问题描述】:
如图所示,我希望鼠标进入 ButtonOne 按钮时显示“一个”弹出控件。当我将鼠标从 ButtonOne 移动到 Button Two 时,“One”弹出控件隐藏而“Two”显示。当鼠标不在按钮或弹窗上时,弹窗控件会自动隐藏。
我尝试使用 mouse_enter 和 mouse_leave 事件,但是当鼠标悬停在按钮上并移动时,弹出控件会闪烁。当鼠标不在按钮或弹出控件上时,弹出控件不会隐藏。
那么,如何解决这个问题?
XAML:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel>
<Button Name="ButtonOne" Height="100" Width="100" HorizontalAlignment="Left" MouseEnter="Button_MouseEnter" MouseLeave="ButtonOne_MouseLeave">Button One</Button>
<Button Name="ButtonTwo" Height="100" Width="100" HorizontalAlignment="Left" MouseEnter="Button_MouseEnter_1" MouseLeave="ButtonTwo_MouseLeave">Button Two</Button>
<Popup Name="Pop1" StaysOpen="False" Placement="Right" PlacementTarget="{Binding ElementName=ButtonOne}" PopupAnimation="Fade" AllowsTransparency="True" MouseEnter="Pop1_MouseEnter" MouseLeave="Pop1_MouseLeave">
<Border BorderBrush="Beige" BorderThickness="2" Background="White">
<StackPanel>
<TextBlock Text="One"></TextBlock>
<Button Content="OneManagement"></Button>
</StackPanel>
</Border>
</Popup>
<Popup Name="Pop2" StaysOpen="False" Placement="Right" PlacementTarget="{Binding ElementName=ButtonTwo}" PopupAnimation="Fade" AllowsTransparency="True">
<Border BorderBrush="Beige" BorderThickness="2" Background="White">
<StackPanel>
<TextBlock Text="Two"></TextBlock>
<Button Content="TwoManangement"></Button>
</StackPanel>
</Border>
</Popup>
</StackPanel>
</Grid>
代码背后:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_MouseEnter(object sender, MouseEventArgs e)
{
Pop2.IsOpen = false;
Pop1.IsOpen = true;
}
private void Button_MouseEnter_1(object sender, MouseEventArgs e)
{
Pop1.IsOpen = false;
Pop2.IsOpen = true;
}
private void ButtonOne_MouseLeave(object sender, MouseEventArgs e)
{
Pop1.IsOpen = false;
}
private void ButtonTwo_MouseLeave(object sender, MouseEventArgs e)
{
Pop2.IsOpen = false;
}
private void Pop1_MouseEnter(object sender, MouseEventArgs e)
{
Pop1.IsOpen = true;
}
private void Pop1_MouseLeave(object sender, MouseEventArgs e)
{
Pop1.IsOpen = false;
}
}
【问题讨论】:
-
使用 .Visible 属性和 .Click 事件?
-
你能发布你的 xaml 吗?