2

如何将UserControl'sFrameworkElement事件绑定到视图模型命令?我使用 MVVM 和 Prism,因此视图模型之间的清晰分离会很好。

我尝试了多种方法,但都没有奏效:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="FrameworkElement.Unloaded">
        <i:InvokeCommandAction Command="{Binding Unloaded}" />
    </i:EventTrigger>
</i:Interaction.Triggers>

也使用本教程http://blog.functionalfun.net/2008/09/hooking-up-commands-to-events-in-wpf.html

local:FrameworkElementBehavior.UnloadedCommand="{Binding Unloaded}"

我是否别无选择,只能在我的代码隐藏中添加一些功能?

上述尝试均未出错,但命令未执行。

这是我的视图模型:

public class CustomerViewModel : PosViewModelBase
{
    public ICommand Unloaded
    {
        get { return new UnloadedCommand(); }
    }

    public CustomerViewModel()
    {

    }

    private class UnloadedCommand : ICommand
    {
        public bool CanExecute(object parameter)
        {
            return true;
        }

        public event EventHandler CanExecuteChanged;

        public void Execute(object parameter)
        {
            Debug.WriteLine("Customer stuff is out of view");
        }
    }
}
4

1 回答 1

2

我认为问题可能出在 Unloaded 事件中。

从 MSDN 页面http://msdn.microsoft.com/en-us/library/ms754221.aspx#common_events

Unloaded 是最后引发的,由正在删除的表示源或可视父项启动。当 Unloaded 被引发和处理时,作为事件源父元素(由 Parent 属性确定)或逻辑或可视树中向上的任何给定元素可能已经取消设置,这意味着数据绑定、资源引用和样式可能不设置为其正常或最后已知的运行时值。

于 2012-06-07T18:03:41.933 回答