Я работаю с некоторой совместимостью WPF в приложении WinForms. У меня есть следующие настройки.
- WinForms UserControl WFControl
- WPF UserControl GalleryControl
- ListBox GalleryItems
- ListBox ItemTemplate GalleryItem
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, но я не могу понять, как это сделать в элементе управления взаимодействия.