无法访问WindowsXamlHost控件的ItemInvoked事件处理程序

时间:2019-10-25 12:48:28

标签: c# wpf .net-core uwp-xaml

我使用xamlIslands在WPF .NetCore3项目中托管自定义UWP控件。我遵循了这篇MSDN文章中的说明,以便在WPF中使用UWP控件-Host a custom UWP control in a WPF app using XAML Islands

其他文章提到WindowsXamlHost的{​​{1}}事件处理程序用于访问基础UWP控件的属性,处理事件等。因此,我试图在WPF项目的内部访问ItemInvoked处理程序。 ChildChanged个文件

我尝试了上面链接代码的代码。 ItemInvoke在下拉菜单中未将其作为以下window.xaml.cs的可选事件列出:

userControl



确实提供ItemInvoked作为可选事件处理程序的另一种方法:

        private void WindowsXamlHost_ChildChanged(object sender, EventArgs e)
        {
            WindowsXamlHost windowsXamlHost = sender as WindowsXamlHost;
            global::MyUWPApp.CustomControls.myNavigationView userControl =
                windowsXamlHost.GetUwpInternalObject() as global::MyUWPApp.CustomControls.myNavigationView;
        }

private void WindowsXamlHost_ChildChanged(object sender, EventArgs e) { var host = (WindowsXamlHost)sender; var myNavView = host.Child as Windows.UI.Xaml.Controls.NavigationView; myNavView.ItemInvoked += MyNavView_ItemInvoked; ; } private void MyNavView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args) { throw new NotImplementedException(); } 处因错误myNavView.ItemInvoked += MyNavView_ItemInvoked;而中断的建筑物
在上面的代码中,将鼠标悬停在System.ArgumentException: 'Delegate to an instance method cannot have null 'this'.上会显示以下信息:myNavView 我猜这行不通,因为它不是对象的实例。

一般信息: 自定义控件“托管”在UWP项目中,该项目与WPF项目链接。如上文所述。在我要使用自定义控件的WPF项目窗口中,可以在(local variable) NavigationView myNavView中访问以下似乎相关或可能有用的事件处理程序:

window.xaml

我希望能够访问 <xaml:WindowsXamlHost InitialTypeName="MyUWPApp.CustomControls.myNavigationView" ChildChanged="WindowsXamlHost_ChildChanged" Loaded="WindowsXamlHost_Loaded_1" Initialized="WindowsXamlHost_Initialized" /> 事件处理程序,以适当地管理UWP ItemInvoked中的选择,如此MSDN文章所述:Using the NavigationView in your UWP applications

0 个答案:

没有答案