使用Blend的一些問題和技巧


  WPF開發,界面處理首選Blend,如果你開發了兩年WPF都沒接觸過blend(當然這種幾率不高),或者你剛接觸WPF,可以考慮使用Blend,這貨也算得上一個神器,上手也不難。以下有兩位講得不錯,大家可以翻翻。

  然而在使用的過程中也遇到一些問題、發現了一些技巧,這里整理了下。

1.Blend里窗體寬高設為1024*768含義

1024 = 窗口的兩條邊框+內容

768   = 窗口標題欄+窗口底邊框+系統任務欄
 

  而且,在win7里最大化窗口時會隱藏窗口左右兩邊和底邊的

2.Margin 某個控件的周圍與它的直接父容器的間距,布局里經常用到

  Margin 0,0,0,0分別是左,上,右,下 ← ↑ → ↓

3.同樣的一個文本控件,字號在VS2010里默認是12號,而在Blend4里卻是9號

  這個問題是由於兩者字體默認單位不一樣,Blend4里默認的單位是英鎊,工具→選項→單位 英鎊改為像素即可一致。

4.用戶控件添加到其他界面后有黃色嘆號和虛框

    在項目里生成項目/重新生成項目即可。

5.鼠標移到Grid邊框上時不可以選中整行或者整列

  工具→選項→美工板→布局→使用網格布局模式 勾選即可。

6.Blend4嵌入字體后每次運行程序都會在C盤里生成大量文件占用空間

  這個問題一般出現在嵌入字體后,每次跑程序都會在C:\Users\XXX\AppData\Local\Microsoft\Expression\Blend,XXX是用戶名,這是Win7的路徑,XP可能在其他路徑下,目前沒有找到什么辦法可以阻止,只能手動去刪除。

7.blend打開項目、xaml文件一直未響應、打開出錯

  是因為這個界面xaml文件里引用了一個類文件(可能是一個資源類,DateContext、或者轉換器、或自定義控件),初始化時需要連接數據庫,沒法連接,所以不要在xaml里引用,在后台里寫后行了。
    blend打開項目一直未響應:某個項目下的debug文件夾內文件錯誤,刪除該debug文件夾或者清理下解決方案。其他解決方法:先打開blend或者只打開blend 或者不要用blend跑代碼。
    blend打開xaml文件一直未響應:該xaml文件內嵌套的某個UserControl可能在Loaded事件里寫了東西,窗體在打開(不管程序有沒有跑起來)會去執行該UserControl的loaded事件來初始化這個UserControl,在xmal里移除該UserControl即可,然后再優化loaded事件。或者如下來處理:
//在WPF中
using System.ComponentModel; if (!DesignerProperties.GetIsInDesignMode(this)) { //...
} //在WinForm開發中,一般會在窗體或者UserControl中判斷當前是否為設計狀態,如:
if (!this.DesignMode) { // }

  這個方法可以起作用。不過有些東西是寫在ViewModel里的,不涉及UI的,這樣寫會破壞結構。

8.怎樣畫一條閉合的路徑

  • 鍵盤按P切換到路徑選中狀態,然后先選中起始點點,按住Shift鍵不放,鼠標移到另外一個需要連接的點上,等鼠標變成一個圓圈就可以點下去連接上了。
  • 如果是兩條不相干的路徑,則要先把兩條路徑同時選中,再進行上面的操作。或者也可以選把兩條路徑生成一條復合路徑再操作。

9.如何畫正圓、同心圓

   按住Alt在拖動就可以畫個同心的控件
  按住Shift時,可以畫出正的控件,即同寬同高
  兩個都按住效果可以疊加

10.Blend的路徑相減是什么意思

   選中要相減的路徑,最后右擊的那個路徑是被減數A,其他的是減數B,最后結果=被減數-減數
  即結果= A - B
  結論:兩路徑相減,要保留哪個就在哪個上面右擊

11.Blend的觸發器層

  如果你的觸發器里是這樣的順序

  

  那么控件會先觸發MouseOver效果,然后按下的時候,會保持Over的效果,累加按下的效果,如果IsPressed在下面,那么按下的時候不會累加效果,會恢復到原樣再執行按下效果。可見,Blend的觸發器層是按照現實順序來的,先觸發over,那么就先創建over屬性,再創建pressed屬性。

12.如何讓Grid某列Collapsed時自動釋放空間

   使用Grid分為兩列,注意:讓要自動釋放空間的那列權值為0,另一列為1,然后再把為0的那列改成Auto模式,這樣當這列里的內容Collapsed時就會釋放空間,而另一列自然就填滿了。
  在布局的時候,先隨便分成兩列,然后分別在各自列里布局,好了之后,兩列權值分別設成1和0,然后0的那列模式改為Auto,注意最后成型時把0那列的visibility設成Collapsed。利用這個特性可以做自動釋放的動畫,而不必使用StackPanel來幫你釋放空間了。

13.如何快速布局

   方法一: 可以選中要布局的對象右鍵→分組,選一個容器就會直接把選中的對象放到對應的容器里。有時候圖省事兩個布局差不多的界面會直接復制粘貼,這個時候要注意,在Blend里:
用分組的話內容不會出現-margin
用剪切粘貼的話可能會出現-margin
  方法二:如果我想在一個border里放個充滿的grid,你是否會選中這個border,然后去工具欄里選中grid,然后到border里拖一個出來,發現沒充滿,然后再一個一個設margin?從現在開始,你不用這樣做了,在工具欄里選中grid后,直接雙擊,就會在當前選中的容器里放一個充滿的grid,不信你可以試試。

14.Blend4里沒有ContextMenu,即右鍵快捷菜單,所以沒法在Blend里編輯ContextMenu的樣式

15.盡量不要使用模糊效果,這東西會讓程序卡得抓狂

16.巧妙使用“重置”

  主要用在設置Margin的時候,Margin有4個值,一個一個設施相當麻煩的,重置一下,全部置為0,相當方便。

  重置前,點白色的方塊即可重置

  重置后

  有木有一鍵還原的錯覺。有的地方使用重置也可以省去不少麻煩,只要你善於發現。

17.如何快速拖動界面

  你還在用滾動條拖界面嗎,其實只需要按住空格鍵,鼠標變成一只小白手之后就可以隨便你拖了。

18.如何快速復制一個控件到旁邊

  如果你覺得Ctrl+C然后Ctrl+V已經很快了,我再告訴你一個更快的方法:按住Alt直接拖動要復制的控件到合適的位置,松開鍵盤和鼠標,就能很快的復制一個控件了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM