在卸载之前,usercontrol的屏幕截图

时间:2012-07-12 12:50:55

标签: wpf mvvm user-controls screenshot

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

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

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

1 个答案:

答案 0 :(得分:1)

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

这就是我要做的事情:

处理导航的mainviewmodel应该在设置新的contentviewmodel之前公开事件并引发此事件。旧的contentviewmodel应该在eventargs中。在你的主窗口代码中,你订阅了这个事件(这里没有破坏mvvm)。当此事件被提升时,您可以调用屏幕截图方法并将结果放入oldviewmodel。

编辑:

主窗口代码隐藏

void NavigationChangingEvent(object sender, NavChangingArgs args)
{
   var oldvm = args.ChangingViewmodel;
   oldvm.Screenshoot = this.mycontentcontrolwheremyviewmodelareshown.GetJpgImage(1, 90);
}