2013-08-20 102 views
1

我們目前正在將我們的產品從WinForms切換到WPF。目前我們正在使用我們應用程序所需的一些第三方WinForm控件。儘管我們計劃最終用WPF版本替換它們,但現在這是不可能的。我們已經嘗試在WindowsFormsHost控件的wpf窗口中託管它們,並且它似乎工作得很好。我們唯一的問題是如何將我們的數據從VM傳遞到這些控件。我們希望避免爲了適應這種控制而對VM進行任何代碼隱藏和更改。理想情況下,我們希望讓VM完全不知道用於顯示其數據的控件,以便當我們切換到WPF版本的這些控件時,我們只需要修改視圖。這就是爲什麼我們正在尋找一種將VM屬性綁定到XAML的託管WinForm控件的方法。如果這有幫助,我們可以肯定的是,從虛擬機到控件只有一種方式綁定,並且我們不介意綁定是否僅工作一次,沒有從虛擬機進行後續更新,因爲虛擬機的屬性我們綁定不會改變。也許有人有任何想法,我們如何能做到這一點?在XAML中綁定winform控件屬性

回答

2

不知道是否有更好的辦法,但這裏有一個想法:

包裝你的WinForm控件/ WindowsFormsHost控件到包裝控件(從Control繼承或使用用戶控件,什麼是最適合你)。

在此包裝上,您可以添加要綁定到VM的依賴項屬性。

在包裝器代碼中,可以添加需要的樣板以在包裝器依賴項屬性和winform屬性之間來回傳播更改。

這隱藏了地毯下的污垢,並暴露出一個很好的WPF外觀,您可以像平常一樣綁定,而無需更改虛擬機。

當控件逐步淘汰時,從您的項目中移除包裝,您可以直接將VM綁定到新的WPF替換控件。

+0

+1,儘管一些代碼示例會使這個更好的答案。 –