我使用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