Добавление контекстного меню в DataGrid в Silverlight5 приводит к утечке памяти - PullRequest
0 голосов
/ 04 декабря 2018

старый проект.

Я добавляю контекстное меню для каждой строки с помощью события 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);
    }

Так что мне делать?

...