是否可以在MVVM模式中使用WindowsFormsHost?

时间:2014-09-01 08:27:25

标签: c# wpf mvvm winforms-interop

我有一个视图模型,我以这种方式创建我的窗体:

System.Windows.Forms.DataVisualization.Charting.Chart chart = new System.Windows.Forms.DataVisualization.Charting.Chart();

我的XAML是:

<WindowsFormsHost x:Name="host" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                <wfCharts:Chart x:Name="MyWinformChart" >
                    <wfCharts:Chart.Series>
                        <wfCharts:Series Name="SerieGraficoExterior" />
                    </wfCharts:Chart.Series>
                    <wfCharts:Chart.ChartAreas>
                        <wfCharts:ChartArea/>
                    </wfCharts:Chart.ChartAreas>
                </wfCharts:Chart>
            </WindowsFormsHost>

但我不知道是否可以绑定到我的视图,因为WindowsFormsHost控件没有ContentControl之类的Content属性,所以我不知道是否可以使用{{1}在MVVM模式中。我用WPF做了一些尝试,后者在代码中工作,但我想尽可能使用MVVM模式。

感谢。

1 个答案:

答案 0 :(得分:3)

您可以将Windows窗体控件嵌入到WPF应用程序中,但不能从窗体控件执行绑定。表单控件没有datacontext属性或依赖项属性,这是绑定的主干。

话虽这么说,您仍然可以在MVVM应用程序中使用表单主机,除了表单控件之外的所有内容,您需要手动执行管道。因此,除非您的应用程序的主要部分基于Windows窗体,否则您仍然可以从MVVM中获益。