我有一個WPF應用程序。我需要在實例化它以獲得焦點之後最小化和恢復主窗口。我正在使用類似下面的類,但它不是我想要的,因爲當窗口恢復時它的大小無效。我試圖修改寬度和高度,但它不起作用。WPF UI在最小化和恢復後調整大小
public class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ConfigureWindow();
}
public void Show()
{
base.Show();
UpdateWindowPositionAndSize();
base.WindowState = WindowState.Normal;
base.Show();
}
private void ConfigureWindow()
{
base.ShowActivated = true;
this.Focusable = true;
if (base.IsActive == false)
{
base.Activate();
}
if (base.IsFocused == false)
{
base.Focus();
}
base.WindowState = WindowState.Minimized;
}
private void UpdateWindowPositionAndSize()
{
this.Top = (SystemParameters.WorkArea.Height - this.Height)/2;
this.Left = (SystemParameters.WorkArea.Width - this.Width)/2;
}
}
我在做什麼錯了?還有另一種方式來獲得重點?對不起,如果問題太新。
更新:
具體是什麼需要?
我需要我的WPF應用程序出現在焦點和激活後啓動它。
爲什麼呢?
由於它將在Windows(7,8.1和10)用戶從文件上下文菜單(即外殼擴展名)中明確單擊子菜單後啓動。這是'爲什麼'我的客戶想要出現在屏幕前並聚焦。
什麼時候?
實例化後的窗口。
怎麼樣?
那麼,我做了一些研究,我發現了幾種方法來做到這一點。我嘗試過的方法之一是最小化窗口並將其還原。其他人喜歡使用函數SwitchToThisWindow或setforegroundwindow,但我想知道是否有更好的選擇。
什麼時候我已經試過最小化和還原窗口發生? (正確的尺寸)
嗯,這種方式讓我專注於主窗口,但它改變了寬度和高度。默認情況下,我將它們定義爲300(w)和300(h),但是在將窗口狀態更改爲正常後,這些值將變爲400(w)和350(h)。
如果我不做任何事情,它馬上就有重點?
...沒有...
UPDATE2:
我選擇在接下來的環節中使用的方法: https://www.roelvanlisdonk.nl/2014/09/05/reliable-bring-external-process-window-to-foreground-without-c/
*「爲了獲得焦點,我需要最小化和恢復主窗口」* ...爲什麼? – Jim
我知道它很髒:c,但是我的客戶想要在啓動應用程序後獲得焦點,如果有更優雅的方式,請讓我知道 – Henry
您的主窗體類不是「MainWindow」嗎?詳細說明什麼是特定需求,爲什麼,何時,如何......因爲至少對我而言這是不清楚的。什麼是問題? ...表單打開時沒有重點? .... – Jim