@ Влад находится на правильном пути.
Здесь есть несколько вариантов. Оба они связаны с обработкой перенаправленных событий.
Для обработки перенаправленного события вы используете имя класса-владельца, за которым следует имя события.
Первый вариант - просто обработать выбранные измененные события (или некоторые другие ListBox
события) в классе Window
:
<Window ...
ListBox.SelectionChanged="OnChildListboxSelectionChanged">
...
</Window>
Второй вариант (более типичный подход) - обрабатывать события ListBox
внутри UserControl, а затем каким-то образом их агрегировать и запускать событие на этом уровне. Это событие затем обрабатывается Window
. Это может быть перенаправленное событие или стандартное событие .NET.
<UserControl ...
ListBox.SelectionChanged="OnChildListBoxSelectionChanged">
...
</UserControl>
Код для управления пользователем:
public event EventHandler<MyArgTypeEventArgs> ListBoxUpdated;
private void OnChildListBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
{
// aggregate data and info
MyArgTypeEventArgs handler = ListBoxUpdated;
if (handler != null)
handler.Invoke(this, GenerateArgs());
}
Window
обрабатывает это событие:
<Window ...
ListBoxUpdated="OnListBoxUpdated">
...
</Window>
Это должно дать вам кое-что для начала.