Как обрабатывать несколько пользовательских элементов управления на одной странице - UWP - PullRequest
0 голосов
/ 21 октября 2018

У меня ситуация, когда на странице требуются два одинаковых пользовательских элемента управления.Пользовательский контроль должен взаимодействовать со страницей и наоборот, поэтому я использовал события для этого.Тем не менее, когда я запускаю событие на странице в UC, оно попадает в оба объекта, вызывая двойное выполнение моих функций.Эти UC также привязаны к ViewModel, но они не были удалены при выходе из страницы.Поэтому, когда пользователь возвращается на ту же страницу и выполняет что-то, он ударит все оставшиеся объекты в памяти.(Потому что события не связывались)

Я думаю, что не правильно использовал UC.Пожалуйста, дайте мне знать, как правильно связываться от страницы к UC и UC к странице, и как использовать один и тот же UC несколько раз на одной странице.

Это приложение UWP, ориентированное на Windows 10 (10240).

Большое спасибо за ваше время.Приветствия!

Мой конструктор пользовательского элемента управления привязывает события к странице.

 public CommentsUserControl()
        {
            this.InitializeComponent();

            AgendaPage.PaperCommentsInitializeEvt += (PaperCommentsInitializeEvt);
            AgendaPage.MeetingCommentsInitializeEvt += (MeetingCommentsInitializeEvt);
            AgendaPage.ClearDisplayCommentsEvt += (ClearDisplayCommentsEvt);
}

При переходе на другую страницу и возвращении эти события попадают в 4 раза с начала 2пользовательские элементы управления были инициализированы.

1 Ответ

0 голосов
/ 28 октября 2018

Надеюсь, это кому-нибудь поможет.Мое решение состояло в том, чтобы реализовать Unload метод Usercontrol и добавить код отмены привязки для моих событий.

AgendaPage.PaperCommentsInitializeEvt -= (PaperCommentsInitializeEvt);
AgendaPage.MeetingCommentsInitializeEvt -= (MeetingCommentsInitializeEvt);
AgendaPage.ClearDisplayCommentsEvt -= (ClearDisplayCommentsEvt);
...