Как вы можете передавать события из UserControl одному из его дочерних элементов? - PullRequest
0 голосов
/ 15 декабря 2018

Предположим, у вас есть UserControl, называемый ActionableListBox, который состоит из DockPanel, который содержит Button и ListBox.

Настройка ActionableListBox для отображения свойств назавернутый ListBox прост.Просто определите свойство в ActionableListBox и делегируйте метод получения / установки внутреннему ListBox.Довольно прямолинейно.

Однако я не нахожу, как настроить ActionableListBox для «прохождения» таких событий, как SelectionChanged и т. Д., Чтобы я мог использовать его в XAML.Вы не можете «делегировать», как со свойствами, так как обработчик событий может появляться только слева от оператора присваивания.

Таким образом, если не заставлять его преобразовывать его в полноценный CustomControl,есть ли способ «пропустить» события, чтобы я мог использовать это UserControl в XAML?

1 Ответ

0 голосов
/ 15 декабря 2018

Это довольно просто на самом деле.Определите событие SelectionChanged для ActionableListBox.Для ListBox SelectionChanged создайте обработчик событий в ActionableListBox, который в свою очередь запускает свой собственный SelectionChanged.

    public event SelectionChangedEventHandler SelectionChanged;
    ...
    listBox.SelectionChanged += listBox_SelectionChanged;
    ...
    void listBox_SelectionChanged(object sender, SelectionChangedEventArgs args)
    {
        SelectionChanged?.Invoke(sender, args);
    }
...