我想創建一些自定義UI控件,可以同時使用WPF和Windows窗體。Windows窗體中的WPF控件?
這可能嗎?
如果是這樣,我可以在WPF中創建這些控件嗎?還是我需要使用Windows窗體控件?
有沒有其他的考慮?
我想創建一些自定義UI控件,可以同時使用WPF和Windows窗體。Windows窗體中的WPF控件?
這可能嗎?
如果是這樣,我可以在WPF中創建這些控件嗎?還是我需要使用Windows窗體控件?
有沒有其他的考慮?
答案:
HwndSource
中。如果您正在編寫控件庫,通常最好是在WPF中實現您的控件(因爲它比WinForms強大得多),然後爲它創建一個代理以使其易於使用在WinForms中。
System.Windows.Forms.Control
HwndSource
,並添加HwndSource
作爲 如下代理是最容易實施代理的子代
或者,您可以選擇不創建代理,而只需告訴您的WinForms用戶,他們需要將您的控件放入HwndSource中,然後將它們添加到其窗體中。
您在創建雙重用途控件時遇到的大多數其他問題對於修復而言都是微不足道的或微不足道的。例如,如果您的控件中有一個接受圖像的功能,只需將其設計爲接受WinForms的位圖或WPF的BitmapSource。如果您有一個通常只支持RoutedEvents的WPF控件,請爲WinForms人羣的舒適性和便利性添加老式的事件處理程序。
ElementHost
將允許您在WinForms表單中嵌入WPF控件,WindowsFormsHost
讓我們將WinForms控件插入到WPF窗口中。
兩者都易於使用,並且都有組成方面的小問題(您不能通過WinForms元素等繪製WPF元素)。