Я работаю с некоторой совместимостью WPF в приложении WinForms. У меня есть следующая настройка.
- WinForms UserControl WFControl
- WPF UserControl GalleryControl
- ListBox GalleryItems
- ListBox ItemTemplate GalleryItem
- ListBox GalleryItems
- WPF UserControl GalleryControl
Winforms размещает GalleryControl, у которого есть GalleryItems (ListBox), у которого есть ItemTemplate для GalleryItem.
Теперь в WFControl я хочу видеть, когда GalleryItems запускает SelectionChanged
событие.
Мои текущие попытки:
Обработайте событие SelectionChanged в GalleryControl и заставьте его вызвать отдельное общедоступное событие, которое мои winforms могут прочитать, но я не могу обработать подобное событие, поскольку это не перенаправленное событие. Это сработало бы, если бы я мог понять, как с этим справиться. применимый код:
public event ClaimGallery SelectedClaimChanged; public ViewModels.InsuranceClaimViewModel ClaimViewModel { get; set; } public int SelectedClaimID { get { return ((Models.InsuranceClaim) ClaimList.SelectedItem).ID; } } public ClaimGallery() { InitializeComponent(); ClaimViewModel = new ViewModels.InsuranceClaimViewModel(); DataContext = ClaimViewModel; ClaimList.ItemsSource = ClaimViewModel.InsuranceClaims; ClaimList.SelectionChanged += ClaimSelectionChanged; } private void ClaimSelectionChanged(object sender, EventArgs e) { //This is the part that doesn't work ClaimList.RaiseEvent(new RoutedEventArgs(SelectedClaimChanged, this)); }
Я также видел, что потенциально могу найти ListBox через какое-то дерево управления, просматривая подписку на фактическое событие в WFControl, но я не могу понять, как это сделать в элементе управления взаимодействием.