目前,我已經實現了,我可以直接訪問我想要訂閱的類,但是如果我有一個我沒有直接訪問的類,會發生什麼?即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的類中一樣。我希望能夠將該事件作爲一個單獨的屬性。 –