2010年10月29日 星期五

WPF學習筆記(一)

這個系列會將我學習WPF時所遇到的疑難雜症一一紀錄下來。



  • 控制項(應該吧=  =)的MouseMove、MouseEnter與MoveLeave事件。若物件為無填色,則這些事件並不會觸發。 (應該是其他需要WindowMessage的事件都收不到但是小弟沒哪麼多時間測試)。
    • 解法:將控制項的背景色設定透明色,無填色和透明色雖然看起來一樣,但是對系統來說是不同的。


  • 漸層填色的StartPoint與EndPoint。
    • 這個屬性使用方式與Point很像。
    • 一個矩型的右上角為(0,0)右下角為(1,1)無視矩型的長與寬。
    • 中點則為(0.5 ,0) 與(0.5 ,1)。
  • Form 與 Window (一)
    • ShowDialog問題,若是使用Form使用ShowDialog函式開啟Window,行為會與原本的不同。如:傳統的Form開啟Form時,將Modal視窗關閉時,父視窗也應一併關閉。但用Form開啟Window時則沒有這種效果。原因出在我們無法設定Window的Owner屬性,因為Window的Owner屬性是System.Windows.Window 。Form的類別是System.Windows.Forms.Form
      • 解法:使用WindowInteropHelper類別,這個類別位於System.Windows.Interop 的命名空間中。
      • Code:Window1 w = new Window1(); WindowInteropHelper helper = new WindowInteropHelper (w);
        helper.Owner =
         this.Handle;
        w.ShowDialog();

  • Form 與 Window (二)
    • 問題:拉了老半天的Window用Form開啟之後,畫面卻看不見。
    • 解法:老實說,我也沒時間研究為什麼這個方法就可以。但是先解了再說。
    • Code:
      Window1 w = new Window1();
      w.InitializeComponent(); //呼叫這個函式即可。
      WindowInteropHelper helper = new WindowInteropHelper(w);
      helper.Owner = 
      this.Handle; 
      w.ShowDialog();


    沒有留言:

    張貼留言