在XAML中绑定winform控件属性

时间:2013-08-20 11:14:26

标签: wpf data-binding

我们目前正在将产品从WinForms转换为WPF。目前我们正在使用我们的应用程序所需的第三方WinForm控件。尽管我们计划最终用WPF版本替换它们,但现在这是不可能的。我们已经尝试在WindowsFormsHost控件中的wpf窗口中托管它们,它似乎工作得很好。我们唯一的问题是如何将数据从VM传递到这些控件。我们希望避免任何代码隐藏和VM的更改只是为了适应这种控制。理想情况下,我们宁愿让VM完全不知道用于显示数据的控件,因此当我们更改为这些控件的WPF版本时,我们只需要修改视图。这就是为什么我们正在寻找一种方法将VM属性绑定到XAML托管的WinForm控件。如果这有所帮助,我们当然可以接受这样一个事实:从VM到控件只有单向绑定,我们不介意绑定是否只工作一次,而没有来自VM的后续更新,因为VM属性我们有约束力不改变。也许有人有任何想法我们如何才能实现这一目标?

1 个答案:

答案 0 :(得分:2)

不确定是否有更好的方法,但这里有一个想法:

将WinForm控件/ WindowsFormsHost控件包装到包装器控件中(从Control继承或使用UserControl,无论什么最适合你)。

在此包装器上,您可以添加要绑定到VM的依赖项属性。

在包装器代码中,您可以添加在包装器依赖项属性和winform属性之间来回传播更改所需的样板文件。

这可以隐藏地毯下的污垢并暴露出一个漂亮的WPF外观,您可以像往常一样绑定它,而无需更换VM。

当控制逐步淘汰时,从项目中删除包装器,您可以将VM直接绑定到新的WPF替换控件。

相关问题