gpt4 book ai didi

c# - 如何删除 DataGrid 中的 Loaded 事件处理程序?

转载 作者:行者123 更新时间:2023-11-30 16:12:11 25 4
gpt4 key购买 nike

我正在尝试在加载 DataGrid 时动态加载列,并在初始化时添加带有一些参数的事件处理程序。

dataGrid.Loaded += (sender, args) => AddColumns(dataGrid, GetAttachedColumns(dataGrid));

但不知道如何在加载 DataGrid 后删除此处理程序。以下代码不起作用。

dataGrid.Loaded -= (sender, args) => AddColumns(dataGrid, GetAttachedColumns(dataGrid));

请帮忙。谢谢。

最佳答案

在需要显式删除事件监听器的情况下,您不能真正使用匿名处理程序。尝试一种普通的旧方法:

private void DataGridLoaded(object sender, RoutedEventArgs args)
{
AddColumns(dataGrid, GetAttachedColumns(dataGrid));
}

然后您可以简单地添加/删除:

dataGrid.Loaded += DataGridLoaded;
dataGrid.Loaded -= DataGridLoaded;

或者,如果您真的想使用 lambda 形式,您可以保留成员变量中的引用。例如:

public class MyControl
{
private RoutedEventHandler _handler;

public void Subscribe()
{
_handler = (sender, args) => AddColumns(dataGrid, GetAttachedColumns(dataGrid));
dataGrid.Loaded -= _handler;
}

public void Unsubscribe()
{
dataGrid.Loaded -= _handler;
}
}

另见其他问题:

关于c# - 如何删除 DataGrid 中的 Loaded 事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23305237/

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