公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




2008年8月22日 星期五

關於在WPF當中使用Windows控制項的做法

首先,要先了解的是,WPF與Windows表單是不同的架構,所以在WPF表單中使用Windows控制項的時候,有些效果會無法控制,像是可見的 WindowsFormsHost 項目一定是在其他 WPF 項目的上層,而且不會受到疊置順序影響、不支援旋轉等等。

若是你一定需要在WPF表單中嵌入Windows控制項,甚至是動態建立Windows控制項操作的話,請參考下面步驟:

1. 在WPF專案中,透過[加入參考]方式,參考WindowsFormsIntegration.dll、System.Windows.Forms.dll 兩個組件。

2. 在XAML的<Window>標籤中,加入下面的命名空間宣告:

xmlns:wf
= "clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

3. 在WPF表單要顯示Windows控制項的位置,加入WindowsFormsHost控制項,然後就可以加入Windows控制項:

<WindowsFormsHost Margin="12,52,66,110" Name="windowsFormsHos2">
    <wf:Button Text="Click!!"   BackColor="Pink" FlatStyle="Flat"/>
</WindowsFormsHost>

4. 若是希望可以透過程式進行動態配置控制項動作的話,就必須在WindowsFormsHost控制項中加入FlowLayoutPanel或是TableLayoutPanel,參考下面的XAML樣式:

<WindowsFormsHost Margin="12,52,66,110" Name="windowsFormsHost1">
     <wf:FlowLayoutPanel/>
</WindowsFormsHost>

   接下來,就可以在程式中,動態加入Windows控制項了!!

private void button1_Click(object sender, RoutedEventArgs e)
{
    System.Windows.Forms.FlowLayoutPanel flp =
       this.windowsFormsHost1.Child as System.Windows.Forms.FlowLayoutPanel;
    System.Windows.Forms.Button btn = new System.Windows.Forms.Button();
    btn.Text = "Hello!";
    flp.Controls.Add(btn);
}

沒有留言:

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)