2010-03-02 66 views
9

我的問題與WPF的設計時支持有關。從MSDN我讀,創建自定義設計時環境

WPF設計提供了一個框架 ,哪些是你可以用它來 實現自定義裝飾器,工具, 屬性編輯器,和設計師一個公共的API。

但是我發現的絕大多數示例都是微不足道的,並沒有說明在現有WPF應用程序中創建自定義設計器的情況。我們在過去的一年中將應用程序從Windows窗體遷移到WPF,下一步將採用現有的WinForms Panel設計器,並將其重寫爲WPF。

只需說這將是一個巨大的項目。但我甚至不知道從哪裏開始。我想知道你們中的任何一個人是否曾經爲WPF應用程序編寫過定製設計師的類似經歷,以及它是什麼樣的。更妙的是,如果您可以比較WinForms設計器和WPF設計器之間的功能並對其進行比較或解釋從前者到後者的轉換,那將會很有幫助。如果您知道任何演示定製設計環境(使用自定義控件等)的簡單示例,那將非常有益。

總而言之,我只是想知道如果很多人已經採取了這種做法,以及他們的結果是什麼。

編輯:爲了澄清,是的,我正在談論主辦一個WPF設計師。看來這可能不可能,這是一個巨大的挫折。這是我們當前的WinForms設計器的屏幕截圖。如您所見,它用於創建自定義的用戶界面。您可以將自定義控件拖放到其上並對其進行設計,然後將面板置於「運行模式」,其中所有控件都可以正常工作。

花了幾個月寫作我們的設計師,這將是可能的WPF?那麼.NET 4.0和VS2010呢?那些會添加任何設計器功能嗎?

alt text http://img94.imageshack.us/img94/5378/oldpaneldesigner.png

回答

2

不幸的是,有可能不取決於你想要做什麼是一個很好的答案。你的問題有點模糊,至於你想要做什麼。你是想在Visual Studio中簡單地擴展現有的設計器,還是試圖在你自己的獨立應用程序中託管WPF設計器?

如果是後者,你可能不能做到這一點。 WinForms設計器實際上是.NET Framework(而不是Visual Studio)的一部分,所以任何提供正確宿主環境的應用程序都可以訪問它。有a good article on MSDN on how to do that hereanother one on from DivElements here

很多人在其他論壇中都問過使用Cider(WPF設計器的代碼名稱)是否可以實現,以及it seems like the answer is no。您唯一可能的選擇是重新設計您的應用程序以使用Visual Studio Isolated Shell。有一個good overview of the options here

編輯:它看起來像SharpDevelop可能有一個WPF設計器,你可以使用。我不是100%確定他們是自己開發的,還是他們想出辦法來主辦它,但你可以看看他們的來源併爲自己做出決定。轉到Daily Builds of Sharp Develop(它的而不是在官方版本中),並獲得最新的每日構建。在該zip文件中,查看Samples/XamlDesigner目錄。

+0

編輯我的問題來添加信息。我們正試圖在我們的應用程序中託管設計人員,顯然隔離殼不是我們的解決方案。我很震驚微軟在這方面缺乏支持 - 他們似乎完全忽略了這種情況的可能性。 – Charlie 2010-03-05 19:47:38

+0

這聽起來不像是他們忽視了情景......但是他們要麼A.沒有時間,要麼B.決定最好的方式來做到這一點,並控制使用是通過隔離殼。儘管...看看孤立的殼,它是高度可定製的。 – Nick 2010-03-05 20:46:31

+1

編輯添加另一個可能的資源... SharpDevelop可能已經想出了一個方法來做到這一點。在我編輯的答案中有一個鏈接到他們的代碼。 – Nick 2010-03-05 22:29:41