2000條你應知的WPF小姿勢 基礎篇<78-81 Dialog/Location/WPF裝置無關性>

來源:互聯網
上載者:User

標籤:style   blog   http   io   ar   color   os   使用   sp   

  在本文開始之前需要介紹一個人:Sean Sexton. 來自明尼蘇達雙城的軟體工程師。最為出色的是他維護了兩個部落格:2,000Things You Should Know About C#  和 2,000 Things You Should Know About WPF 。他以類似微博式的150字簡短語言來每天更新一條WPF和C#重要又容易被遺忘的知識。很希望能夠分享給大家。

  本系列我不僅會翻譯他的每一個tip,也會加入自己開發之中的看法和見解。本系列我希望自己也能和他一樣堅持下來,每天的進步才能促成偉大。

  在這裡鄭重說明.該系列是基於Sean Sexton先生的英文部落格, Sean Sexton擁有全部著作權和撤銷權利。

  前文可以翻閱本部落格wpf標籤的文章。查看往期

  [小九的學堂,致力於以平凡的語言描述不平凡的技術。如要轉載,請註明來源:小九的學堂。cnblogs.com/xfuture]

  

  #78 Modal Dialog 和 Modeless Window

  Modal Dialog(強制回應視窗)是出現在該程式其他視窗之前的視窗,會阻止與其他視窗所以的互動,直至其關閉。最小化Modal Window也會最小化其餘所有視窗。

  Modeless Window 即正常表單,不會阻礙和其餘視窗的互動,互不干涉。

  在實際應用中根據不同業務情況選擇不同的視窗類別型。

  下面例子中使用Window.Show和Window.ShowDialog方法來分別展示非強制回應視窗和強制回應視窗。

private void btnModal_Click(object sender, RoutedEventArgs e){    ChildWindow win = new ChildWindow();    win.Title = "Modal child - " + DateTime.Now.ToLongTimeString();    win.ShowDialog();} private void btnModeless_Click(object sender, RoutedEventArgs e){    ChildWindow win = new ChildWindow();    win.Title = "Modeless window - " + DateTime.Now.ToLongTimeString();    win.Show();}  

  

  #79 Modal Dialog 和 Modeless Window舉例(使用Windows內建Notepad)

  運行Windows內建的記事本就可以看到Modal Dialog和Modeless Dialog兩種表單形式。

  開啟記事本後,輸入一些文字,點擊尋找Edit|Find(Ctrl+F)。可以發現可以隨意切換主表單和搜尋視窗的。所以Find Dialog是一個modeless dialog,你仍可以與主表單進行互動。

  

  然後關閉Find視窗,點擊File|Print(Ctrl+p)開啟列印表單。當列印表單存在的時候,你可以發現你並不能切換到主表單了。列印表單就是一個強制回應視窗(Modal Dialog)。

  

  

  #80 Window Size and Location

  Window類擁有Left和Top屬性來定位其在顯示器中的位置。同時擁有Width和Height來指定視窗大小。賦值時使用的都是裝置無關的單位(device independent units).

  假設你螢幕的DPI設定為96Dpi(dots per inch),WpF使用的單位是裝置無關單位. 當你設定為96個單位的時候就是1 inch高.如果是其他Dpi,則遵循之下換算公式:

   # pixels = (# WPF Units) * (DPI / 96)

  這樣Wpf程式顯示在相同尺寸顯示器中是相同的,無論是什麼像素的密度。

 

  #81 WPF Units

  在Windows Form, 控制項大小是以pixel來控制的。在WPF中,是以Wpf Units來控制的,裝置無關。

  1 WPF unit = 1/96 inch.  也就是說在96DPI顯示器上, 1 WPF Unit = 1 pixel.

  也就是說在120DPI的環境,1 WPF unit = 1.25 pixels.  (120/96)。

  在Windows Form中也可以實作類別似的裝置無關性,通過修改Form的AutoScaleMode屬性,在WPF中,是自動的。

  公式:# pixels = (# WPF Units) * (DPI / 96)

  

  

  下一期會有更多關於WPF GUI和Application 周期,希望能多多關注~

2000條你應知的WPF小姿勢 基礎篇<78-81 Dialog/Location/WPF裝置無關性>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.