2017-09-07 36 views
1

我讀了一些關於如何防止WPF應用程序最大化的答案,並且其中大部分工作。防止從任務管理器(WPF應用程序)最大化

 ResizeMode="CanMinimize" 

工作正常。

但是,用戶仍然可以去任務管理器,並最大化窗口從那裏:

enter image description here

,這將導致一些問題。

提出的一種方案是聽StateChanged事件,像這樣:

this.StateChanged += new System.EventHandler((sender, eventArgs) => 
{ 
    if (this.WindowState == System.Windows.WindowState.Maximized) 
    { 
     this.WindowState = System.Windows.WindowState.Normal; 
    } 
} 

這也適用,但它給像「blickering」動畫窗口去左上角,然後立即返回到它的原始位置。所以從某種意義上說,它是有效的,但它在眼睛上並不好。

有沒有辦法處理狀態更改事件執行之前?像BeforeStateChange

+0

我認爲,如果沒有P-援引這幾乎是不可能的:/ – sTrenat

+0

對不起張貼無益的評論,但我不會」當用戶決定長時間(TaskManager)來克服你的預期佈局時,我真的很擔心自己會變得「不錯」。您應該決定用戶是否嘗試最大化您的窗口(提示:用戶永遠不會錯,但通常無能爲力!),或者如果您在決定窗口大小時對用戶不太好超大字體的窗口設置。 – grek40

回答

0

一個可能的解決方案可能是明確設置最大窗口大小。由於CanMinimize模式意味着你不能調整窗口的大小,你可以限制它的大小像:

<Window 
    MaxHeight="{Binding Height, RelativeSource={RelativeSource Self}}" 
    MaxWidth="{Binding Width, RelativeSource={RelativeSource Self}}"> 
    <!-- ... --> 
</Window> 
相關問題