dre*_*jer 9 wpf restore windowstate minimized
我的应用程序有一个托盘图标,双击时会隐藏或显示应用程序窗口.我的问题是,如果隐藏窗口处于最小化状态,我似乎无法将窗口置于前台.
例如,假设用户最小化应用程序,然后双击托盘图标.然后隐藏应用程序窗口并从任务栏中消失.当用户再次双击托盘图标时,应该出现应用程序窗口,即应该从最小化状态恢复并将其带到前台.
下面的代码应该这样做,但由于某种原因,它不会:
private void TrayIcon_DoubleClick(object sender, EventArgs e)
{
if (this.Visibility == Visibility.Hidden)
{
this.Visibility = Visibility.Visible;
this.WindowState = WindowState.Normal;
this.Activate();
}
...
}
Run Code Online (Sandbox Code Playgroud)
应用程序保持最小化,不会被带到前台.Activate()返回true,后续调用TrayIcon_DoubleClick()表示状态确实设置为Normal.
dre*_*jer 14
我在MSDN论坛上发布了我的问题并在那里得到了解答.引用答案:
Window上的一些属性更像是方法,在某种意义上它们会导致复杂的操作发生,需要在上一个操作完成之后发生.实现这一目标的一种方法是使用Dispatcher.BeginInvoke.如果您将代码更改为这样,它应该工作:
if (this.Visibility == Visibility.Hidden)
{
this.Visibility = Visibility.Visible;
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background,
new Action(delegate()
{
this.WindowState = WindowState.Normal;
this.Activate();
})
);
}
Run Code Online (Sandbox Code Playgroud)
我尝试了这个,它解决了我的问题.另外,我认为你也可以省略this.Activate().
| 归档时间: |
|
| 查看次数: |
7627 次 |
| 最近记录: |