如何将 ActiveX 控件挂钩到事件/更改到我的视图模型中?

Posted

技术标签:

【中文标题】如何将 ActiveX 控件挂钩到事件/更改到我的视图模型中?【英文标题】:How to hook ActiveX control into events/changes into my viewmodel? 【发布时间】:2010-10-09 01:45:50 【问题描述】:

我已将 WindowsMediaPlayer ActiveX 添加到我的 WPF/MVVM 应用程序中。现在我需要控件来对视图模型中发生的变化做出反应(最重要的是,当我的集合中的当前选择发生变化时更新 URL)。基于Walkthrough: Hosting an ActiveX Control in WPF,我的 Loaded 事件中有以下内容:

// Create the interop host control.
System.Windows.Forms.Integration.WindowsFormsHost host =
new System.Windows.Forms.Integration.WindowsFormsHost();

// Create the ActiveX control.
AxWMPLib.AxWindowsMediaPlayer axWmp = new AxWMPLib.AxWindowsMediaPlayer();

// Assign the ActiveX control as the host control's child.
host.Child = axWmp;

// Add the interop host control to the Grid
// control's collection of child controls.
this.pnlMediaPlayer.Children.Add(host);

问题是 - 如何在视图模型中的属性更改时更新 axWMP.URL 控件属性?

【问题讨论】:

【参考方案1】:

好的,使用 Windows.Forms.Binding:

axWmp.DataBindings.Add(new System.Windows.Forms.Binding("URL",(DisplayViewModel)this.DataContext,"Source"));

【讨论】:

这对于从 ViewModel 更新 ActiveX 控件非常有用,但是您是否曾经从 ActiveX 控件更新过 View Model?如果有,如何更新?

以上是关于如何将 ActiveX 控件挂钩到事件/更改到我的视图模型中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在asp.net用户控件(ascx)中插入activex

如何在 MFC 应用程序中捕获 OLE 控件事件?由创建的 ActiveX 控件触发

如何使用 MFC 以编程方式更改 ActiveX 控件的属性?

如何将方法挂钩到 Delphi 7 IDE 中的 Edit 事件?

单击时,如何使使用 C# 编写的 ActiveX 控件在 JavaScript 中引发事件?

如何将 WPF 中的命令绑定到控件的双击事件处理程序?