【发布时间】:2013-09-06 09:04:26
【问题描述】:
我正在使用 WPF 编写应用程序。我想要这样的动作:当我在一个按钮上按下鼠标按钮时,会出现另一个窗口,当我在任何地方释放鼠标按钮时,这个窗口就会隐藏。到目前为止,这是我的代码:
XAML:
<Button Margin="0,0,0,0" Name="button_wykres" PreviewMouseUp="button_wykres_PreviewMouseUp" PreviewMouseDown="button_wykres_PreviewMouseDown">
C#:
private void button_wykres_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
omww.Top = this.Top+50;
omww.Left = this.Left +180;
omww.Show();
}
private void button_wykres_PreviewMouseUp(object sender, MouseButtonEventArgs e)
{
omww.Hide();
}
问题是新窗口 (omww) 出现在主窗口下方,但我需要它在顶部。当我尝试其他事件时,即 button.Click 窗口显示在旧的上方,正如我想要的那样,这让我感到困惑。但是,Click 事件不能满足我的需求。如果有人帮助我,我将不胜感激。
【问题讨论】:
-
检查
ShowActivatedproperty。或者调用Activate方法。或者不要使用 Preview 事件。下一个问题似乎是您显示 wndow 并立即将其隐藏。 -
为什么需要两个窗口,根据您的问题,用户将无法在 window2 (omww) 上执行任何操作,因为一旦用户释放鼠标按钮,它就会消失?
-
@nit,正确,这就是我需要的。
-
@RicoW 使用
Popup来显示您在Window中显示的内容?如果您有另一个Window并将其激活/聚焦以使其位于前面,它很可能会立即在第一个窗口上触发PreviewMouseUp,因此您最终看到的只是闪烁。使用弹出窗口,您应该能够很好地满足您的要求。 -
@RicoW 如果您想坚持自己的想法,请尝试在您的
PreviewMouseDown事件中将omww.Topmost = true;设置在omww.Show();之后