我正在使用 MVVM 模式,因此我的视图模型对视图一无所知,并且视图通过 DataTemplates 显示。
当视图不再显示时,我想对其进行截图(使用实用程序类)。所以我想绑定到 FrameworkElement.Unloaded,当它命中时,截取用户控件的屏幕截图,以便在另一个控件中使用,以选择要转到的视图。
我读了这篇文章,它看起来好像附加属性可以工作(我在 UserControl 对象上使用它) http://blog.functionalfun.net/2008/09/hooking-up-commands-to-events-在-wpf.html
我收到绑定只能在 DependencyObject 或 DependencyProperty 上设置的错误。我正确地遵循了他的指示。知道为什么这不起作用或如何在 MVVM 场景中绑定到它吗?
是否无法绑定到该特定事件或根 xaml 节点中的事件?
这是代码(除了上面链接中的 EventBehaviorFactory)
public static class FrameworkElementBehavior
{
public static readonly DependencyProperty UnloadedCommandProperty = EventBehaviourFactory.CreateCommandExecutionEventBehaviour(FrameworkElement.UnloadedEvent, "UnloadedCommand", typeof(FrameworkElementBehavior));
public static void SetUnloadedCommand(DependencyObject o, ICommand value)
{
o.SetValue(UnloadedCommandProperty, value);
}
public static ICommand GetUnloadedCommand(DependencyObject o)
{
return o.GetValue(UnloadedCommandProperty) as ICommand;
}
}
<UserControl x:Class="WTF.BuxComp.Prism.Modules.Win.OrderEntryPos.Views.CustomerView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WTF.BuxComp.Prism.Modules.Win.OrderEntryPos.Helpers"
mc:Ignorable="d"
d:DesignHeight="510" d:DesignWidth="716"
local:FrameworkElementBehavior.UnloadedCommand="{Binding UnloadedCommand}">
确切的错误是
不能在“CustomerView”类型的“SetUnloadedCommand”属性上设置“绑定”。只能在 DependencyObject 的 DependencyProperty 上设置“绑定”。