WPF绑定FrameworkElement的事件命令(WPF Binding FrameworkEl

2019-09-17 21:05发布

我怎样才能绑定UserControlFrameworkElement事件视图模型的命令? 我使用的视图的视图模型将是很好之间MVVM和棱镜如此清晰的分离。

我试过许多东西,和他们没有工作:

<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");
        }
    }
}

Answer 1:

我认为这个问题可以在空载情况下。

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

卸载时提出最后并开始由被删除要么呈现源或视觉父。 当卸载时升高和处理,这是事件源的父(由Parent属性确定的)元件或在逻辑或视觉树向上的任何给定元件可能已经被复位,也就是说,数据绑定,资源引用和样式可不能设置为正常的或最后为人所知的运行时间值。



文章来源: WPF Binding FrameworkElement event to command