1
我正在嘗試使用MVVM將Windows窗體控件綁定到WPF中的面板。我的總體目標是能夠動態地更改我將使用的具體Windows窗體控件,因爲我計劃有幾個可用的窗體控件。如何使用WPF中的MVVM將Windows窗體控件綁定到「Grid」面板
現在,我已經能夠通過讓應用程序在初始化時啓動一個回調來工作,該回調通過名稱訪問網格對象。這裏是XAML目前的樣子:
<Grid Name="WindowsControlObject"></Grid>
回調如下所示:
private void WindowLoaded(object sender, RoutedEventArgs e)
{
System.Windows.Forms.Integration.WindowsFormsHost host =
new System.Windows.Forms.Integration.WindowsFormsHost();
System.Windows.Forms.Control activeXControl = new SomeWindowsControl();
host.Child = activeXControl;
this.WindowsControlObject.Children.Add(host);
}
雖然這個作品,我想充分利用MVVM模式,因此是有辦法,我可以這樣做在XAML /模型視圖如下:
XAML:
<Grid Content="{Binding WindowsControl"></Grid>
在我的模式lView:
public class MyModelView
{
public Grid WindowsControl;
public MyModelView{
WindowsControl = new Grid;
System.Windows.Forms.Integration.WindowsFormsHost host =
new System.Windows.Forms.Integration.WindowsFormsHost();
System.Windows.Forms.Control activeXControl = new SomeWindowsControl();
host.Child = activeXControl;
WindowsControl.WindowsControlObject.Children.Add(host);
}
}
我甚至在我的探索/可能的方法嗎?我想到我可能需要使用其他類型的面板(除了網格),但還沒有發現任何明顯的東西。如果不能完成,我有一個解決方案,只是不是一個很乾淨的。
做更多挖掘,事實證明,我真的想要將它綁定到「ContentControl」標記,如下所示: XAML: ViewModel: public MyModelView {System.Windows.Forms.Control _myControl; 公共WindowsFormsHost STKObject { 得到 { 返回新WindowsFormsHost(){兒童= _myControl}; } } } –
Aerophilic
不明白你的問題,你想使用綁定將'host'控件添加到'Grid'中? –