старый проект.
Я добавляю контекстное меню для каждой строки с помощью события LoadingRow, например:
private void Test_LoadingRow(object sender, DataGridRowEventArgs e)
{
var menu = new ContextMenu();
if (xxxx)
{
var test1 = new MenuItem { Header = "Test1" };
test1.Click += Test1_Click;
menu.Items.Add(test1);
}
if(xxxx)
{
var test2 = new MenuItem { Header = "Test2" };
test2.Click += Test2_Click;
menu.Items.Add(test2);
}
ContextMenuService.SetContextMenu(e.Row, menu);
}
, но это приводило к утечке памяти. Я искал несколько ответов.и нужно было отделить контекстное меню через UnloadingRow.Я попробовал это, но это не сработало!
private void Test_UnloadingRow(object sender, DataGridRowEventArgs e)
{
ContextMenu contextMenu = ContextMenuService.GetContextMenu(e.Row);
foreach (MenuItem item in contextMenu.Items)
{
item.Click -= Test1_Click;
item.Click -= Test2_Click;
}
ContextMenuService.SetContextMenu(e.Row, null);
}
Так что мне делать?