我有一个名为InformationView.xaml的View,这个View被重复用于显示来自3个不同来源的相同信息(每个视图都有不同的窗口标题)。每个View都将其datacontext设置为一个ViewModel类型的相同实例。在我的ViewModel类中,我有一个ICommand属性,View中的“Close”按钮被绑定到该属性。 - 有没有办法确定发件人是谁的命令? (具体来说,按窗口标题)。
以下是一个例子:
我有一个带有以下按钮的视图类(“注意:每个视图将有不同的窗口标题/来自不同来源的显示数据 - 但使用相同的视图)
<Button Width="75" Height="23" Margin="0,0,5,5" Content="Close" Command="{Binding CloseCommand}" />
我有一个带有以下命令的ViewModel类
public ICommand CloseCommand
{
get
{
if (this._closeCommand == null)
{
this._closeCommand = new RelayCommand(Command => this.OnClose());
}
return _closeCommand;
}
}
我正在寻找一种方法来确定执行命令的窗口(我将使用相同的ViewModel创建View的多个实例)。
答案 0 :(得分:0)
我不确定我是否理解正确。但是,您可以实现Unloaded
事件。在该事件方法中设置断点并在达到断点时设置断点。您可以检查该视图的窗口标题属性。
答案 1 :(得分:0)
如何将Close()
方法公开,以便其他对象可以指定关闭行为应该是什么?
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
}