0

我正在构建一个 pos 系统,它有一个主 ContentControl 来显示应用程序的不同屏幕。我使用 DataTemplates 将我的视图模型映射到视图。为了在 ContentControl 中显示的不同视图之间导航,我想在卸载 UserControl(或 ContentControl 更改)时将 UserControl 的屏幕截图存储在视图模型中。

我在这里发布了一个相关问题WPF Binding FrameworkElement event to command 我试图将命令绑定到 FrameworkElement.Unloaded 但这不起作用(请参阅该链接上的答案)

在不破坏 MVVM 模式的情况下这可能吗?

4

1 回答 1

1

是如何在 wpf 中进行屏幕截图的一个很好的链接。

这是我要做的:

我处理导航的 mainviewmodel 应该在设置新的 contentviewmodel 之前公开一个事件并引发此事件。旧的 contentviewmodel 应该在 eventargs 中。在您订阅事件的主窗口代码隐藏中(此处不破坏 mvvm)。当这个事件被引发时,你可以调用 screenshot 方法并将结果放到 oldviewmodel 中。

编辑:

主窗口代码隐藏

void NavigationChangingEvent(object sender, NavChangingArgs args)
{
   var oldvm = args.ChangingViewmodel;
   oldvm.Screenshoot = this.mycontentcontrolwheremyviewmodelareshown.GetJpgImage(1, 90);
}
于 2012-07-12T13:24:28.780 回答