**:
相信很多人使用wpf時會選擇自定義美觀的視窗,因此會設定windowstyle="none" 取消自帶的標題欄。但這樣使用 windowstate="maximized" 或者後台 this.windowstate = system.windows.windowstate.maximized; 最大化視窗會覆蓋掉系統工作列,即全屏了。這其實並不是個很好的體驗。
在網上找答案,排名靠前的都是提供用hook鉤子,篇幅很長,如:
個人感覺這麼乙個小功能新增那麼多的**是不人性的,於是繼續尋找,終於看到黎明的曙光:
rect rcnormal;//好了,最大化和最小化事件自定義好了。嗯,功能應該夠了吧??其實還不夠,讓我們想想,平時我們拖動視窗的時候,如果視窗拖動到頂端滑鼠出界的話視窗將會最大化是不是?在wpf中 windowstyle="none" 下也還是全屏效果,而且會覆蓋掉我們自定義的效果,你可以試一下,這個時候你的this.width和this.height都無用了。定義乙個全域性rect記錄還原狀態下視窗的位置和大小。
//////
最大化
/// private
void btnmaximize_click(object
sender, routedeventargs e)
//////
還原
/// private
void btnnormal_click(object
sender, routedeventargs e)
那該怎麼辦呢?看下邊:
在前台新增:
sizechanged="後台:window_sizechanged
"
privateok,搞定!void window_sizechanged(object
sender, sizechangedeventargs e)
}
這麼簡單的**,相信大家看的懂吧~~
另附雙擊標題欄事件:
privatevoid grid_mousedown(object
sender, mousebuttoneventargs e)
else}}
WPF視窗最大化 不覆蓋工作列
目的 讓視窗初始化時 最大化,只有最小化和關閉按鈕。許多軟體都是如此 分析 網上好多實現都是一大堆 直接使用win的api來獲取各種引數 實現 全屏設定 rect rc systemparameters.workarea 獲取工作區大小 this.left 0 設定位置 this.top 0 thi...
WPF自定義視窗最大化顯示工作列
當我們要自定義wpf視窗樣式時,通常是採用設計視窗的屬性 windowstyle none 然後為視窗自定義放大,縮小,關閉按鈕的樣式。然而這樣的話,當通過 設定視窗 如下 放大時,視窗會把工作列給遮檔住。private void max click object sender,routedeven...
WPF自定義視窗最大化顯示工作列
原文 wpf自定義視窗最大化顯示工作列 當我們要自定義wpf視窗樣式時,通常是採用設計視窗的屬性 windowstyle none 然後為視窗自定義放大,縮小,關閉按鈕的樣式。然而這樣的話,當通過 設定視窗 如下 放大時,視窗會把工作列給遮檔住。private void max click obje...