繁体   English   中英

如何确定哪个 View 执行了命令

[英]How to determine which View executed a command

我有一个名为 InformationView.xaml 的视图,这个视图被重新用于显示来自 3 个不同来源的相同信息(每个视图都有不同的 window 标题)。 每个 View 的数据上下文都设置了一个 ViewModel 类型的相同实例。 在我的 ViewModel class 中,我有一个 ICommand 属性,视图中的“关闭”按钮绑定到该属性。 -- 有没有办法确定谁是命令的发送者? (具体来说,由 window 标题)。

这是一个例子:

我有一个带有以下按钮的视图 class(“注意:每个视图都有不同的 window 标题/显示来自不同来源的数据——但使用相同的视图)

<Button Width="75" Height="23" Margin="0,0,5,5" Content="Close" Command="{Binding CloseCommand}" />

我有一个 ViewModel class 使用以下命令

    public ICommand CloseCommand
    {
        get
        {
            if (this._closeCommand == null)
            {
                this._closeCommand = new RelayCommand(Command => this.OnClose());
            }     
            return _closeCommand;
        }
    }

我正在寻找一种方法来确定哪个 window 执行了命令(我将有多个使用相同 ViewModel 的 View 实例)。

我不确定我是否理解正确。 但是,您可以实现Unloaded事件。 在该事件方法中设置断点,并在您遇到断点时设置断点。 您可以检查该视图的 window 标题属性。

只是将Close()方法设为 public 以便其他对象可以指定关闭行为应该是什么?

您的InformationViewModel中与此类似的内容:

public event EventHandler RequestClose;

void OnRequestClose()
{
    EventHandler handler = this.RequestClose;
    if (handler != null)
        handler(this, EventArgs.Empty);
}

然后您可以在其他视图模型中使用它,如下所示:

InformationViewModel.Close += CloseMethod;

public CloseMethod(object sender, EventArgs e)
{
    // Implement close logic here
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM