我建议您使用自己的自定义事件处理程序来做这种事情。对于您的问题所需要的内容,这可能有点矫枉过正,但它有更多的用途和更多的可扩展性。WPF 也应该使用一种 MVVM 模式来实现,这意味着您只需要让 ViewModel 相互交谈。出于本示例的目的,我将假设每个窗口都有一个关联的 ViewModel。
首先创建您自己的事件参数,如下图所示。
public class MyCustomEventArgs : EventArgs {
}
然后编写自己的事件处理程序类,如下所示。
public class CustomEventHander {
static public event EventHandler CustomEvent;
static public void RaiseMyCustomEvent(object sender, EventArgs args) {
if (CustomEvent != null) CustomEvent(sender,args);
}
}
然后你只需要把它连接起来。
在您的第一个 Windows ViewModel 上,您需要将事件处理程序放在您的构造函数中。
CustomEventHandler.CustomEvent += handleCustomEvent;
其次,您通过编写 handleCustomEvent 方法来编写事件的句柄。这是您增加所需数字的地方。
private void handleCustomEvent(object sender, EventArgs e) {
if (e is MyCustomEventArgs) {
this.IntValue += 1;
}
}
到目前为止,我们可以处理事件,引发事件,但我们需要触发事件。
在第二个 Windows 控制器中,将 ICommand 连接到按钮并将以下代码放入方法中。
CustomEventHandler.RaiseMyCustomEvent(this, new MyCustomEventArgs());
我希望这回答了你的问题。当然,我已经假设使用 MVVM 并且属性 IntValue 被绑定到第一个窗口上的文本框。但是此代码应该有望满足您的需求。