我有一个win表单应用程序,我正在重写使用WPF和MVVM模式。 它使用用C ++编写的DLL来公开我需要将我的模型绑定到WPF应用程序中的几个函数。
例如我从DLL中获得此功能。
// The user supplied function will be called whenever a frame of data arrives.
SetDataHandlerFunc(void (*MyFunction)(sFrameOfData* pFrameOfData));
我有一个看起来像这样的包装dll:
public delegate void HandlerFunction(IntPtr frameData);
[DllImport("lib\\SDK.dll")]
public extern static int SetDataHandlerFunc(HandlerFunction function);
让我稍后在我的表单应用程序中使用它:
private HandlerFunction myFunction;
myFunction = new HandlerFunction(threadFunction);
private void threadFunction(IntPtr FrameData)
{
sFrameOfData frame = (sFrameOfData)Marshal.PtrToStructure(FrameData, typeof(sFrameOfData));
}
但我无法弄清楚如何将其转换为MVVM和WPF数据绑定。 我认为我可能正在考虑使用ObjectDataProvider绑定到方法。
我需要从帧数据中获取一些参数(作为上面的sFrameOfData对象返回)并在GUI中显示它们,并在数据更改时更新它们。
关于如何实现这样的事情的任何想法?
答案 0 :(得分:1)
您实际上不会绑定到该方法。 在您的视图模型中,具有表示您感兴趣的参数的属性并绑定到这些参数。
因此在你的threadFunction中获取你的sFrameOfData对象,然后在你的viewmodel上设置属性的值。 确保实现INotifyPropertyChanged以将属性更改事件引发到视图,在该视图上,您具有绑定到viewmodel上的属性的控件。