gpt4 book ai didi

c# - += 和 -= 在这段代码中做了什么?

转载 作者:太空宇宙 更新时间:2023-11-03 17:49:37 26 4
gpt4 key购买 nike

我是 wpf 和 mvvm 概念的新手。这里有一个tutorial我正在学习,但我无法理解这部分;
在图 7 中:

 protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);

MainWindow window = new MainWindow();

// Create the ViewModel to which
// the main window binds.
string path = "Data/customers.xml";
var viewModel = new MainWindowViewModel(path);

// When the ViewModel asks to be closed,
// close the window.
EventHandler handler = null;
handler = delegate
{
viewModel.RequestClose -= handler;
window.Close();
};
viewModel.RequestClose += handler;

// Allow all controls in the window to
// bind to the ViewModel by setting the
// DataContext, which propagates down
// the element tree.
window.DataContext = viewModel;

window.Show();
}

什么是 viewModel.RequestClose -= handler;viewModel.RequestClose += handler;正在做?

最佳答案

viewModel.RequestClose += handler;添加 EventHandler到 RequestClose 事件。 -=删除它。

请注意,删除它是作为清理完成的,因为看起来在处理程序中完成的下一件事就是关闭窗口。
MainWindowViewModel是一个发布名为 RequestClose 的事件的对象.您的代码正在订阅该事件。您的代码希望在触发该事件时进行处理。为此,您可以使用 += 向事件添加处理程序。 .当你这样做时,MainWindowViewModel实例触发事件,您的处理程序运行。事件允许对象之间的一种解耦形式的通信。看起来您的处理程序也将关闭窗口,因此需要通过从事件中删除处理程序来进行进一步的清理操作,-= .

MSDN事件的文档。

Events enable a class or object to notify other classes or objects when something of interest occurs. The class that sends (or raises) the event is called the publisher and the classes that receive (or handle) the event are called subscribers.

关于c# - += 和 -= 在这段代码中做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36071516/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com