将模型绑定到DLL函数

时间:2013-07-05 13:32:00

标签: c# wpf mvvm

我有一个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中显示它们,并在数据更改时更新它们。

关于如何实现这样的事情的任何想法?

1 个答案:

答案 0 :(得分:1)

您实际上不会绑定到该方法。 在您的视图模型中,具有表示您感兴趣的参数的属性并绑定到这些参数。

因此在你的threadFunction中获取你的sFrameOfData对象,然后在你的viewmodel上设置属性的值。 确保实现INotifyPropertyChanged以将属性更改事件引发到视图,在该视图上,您​​具有绑定到viewmodel上的属性的控件。