我正在使用 WinForms 应用程序中的一些 WPF 互操作性。我有以下设置。
- WinForms 用户控件 WFControl
- WPF 用户控件库控件
- ListBox GalleryItems
- 列表框项模板库项
- ListBox GalleryItems
- WPF 用户控件库控件
托管 GalleryControl 的 Winforms,它具有 GalleryItems (ListBox),其 ItemTemplate 为 GalleryItem。
现在在 WFControl 中,我想查看 GalleryItems 何时SelectionChanged
触发了它的事件。
我目前的尝试试图:
处理 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,但我似乎不知道如何在互操作控件中执行此操作。