目前,我已经实现了,我可以直接访问我想要订阅的类,但是如果我有一个我没有直接访问的类,会发生什么?即X触发的事件,Y订阅它。没有使用静态事件可以这样做吗?就好像你有两个窗口,一个发生在一个窗口上,而你希望在第二个窗口上触发它。是否可以间接订阅事件?
例子:
Y (listens for event and DoSomething()) ---.
|----Event
X (triggers event when something changes) -'
当前代码:
public static class MyEvents {
public delegate void FirstEventHandler();
}
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
SecondaryWindow secondWindow = new SecondaryWindow();
secondWindow.Show();
secondWindow.secondaryWindowEvent += new MyEvents.FirstEventHandler(callEvent);
}
protected void callEvent() {
MessageBox.Show("This is a MessageBox.");
}
}
你的意思是你没有直接访问的课程? –
@lc .:可能他没有提及A类中的B类实例,但他们需要一些通信手段。这在MVVM类型的用户界面中发生了很多。有一种方法可以通过弱事件引用来处理它(静态事件有点邪恶,因为它们会引起GC中的混乱) –
@lc。我的意思是,一个不是在第一个内部创建的类,就像在上面的在MainWindow中创建secondWindow的类中一样。我希望能够将该事件作为一个单独的属性。 –