WinFormsアプリケーションでいくつかのWPF相互運用性を使用しています。私は次のように設定しています。
- WinForms UserControl WFControl
- WPF UserControl GalleryControl
- ListBox GalleryItems
- ListBox ItemTemplate GalleryItem
- ListBox GalleryItems
- WPF UserControl GalleryControl
GalleryItemのItemTemplateを持つGalleryItems(ListBox)を持つGalleryControlをホストするWinforms。
SelectionChanged
ここで、WFControlで、GalleryItemsがイベントをトリガーしたときを確認したいと思います。
私の現在の試みは次のことを試みました:
GalleryControlでSelectionChangedイベントを処理し、WinFormが読み取ることができる個別のパブリックイベントを発生させるようにしますが、ルーティングされたイベントではないため、そのようなイベントを処理することはできません。私がそれを処理する方法を理解できれば、これはうまくいくでしょう。該当するコード:
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)); }
また、WFControlの実際のイベントへのサブスクライブを参照するコントロールツリーを介してListBoxを見つけることができる可能性があることもわかりましたが、相互運用されたコントロールでこれを行う方法がわかりません。