这是我在ViewModel中的代码
async Task ExecuteMenu(object obj)
{
Page page = new Page();
System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
Type t_form = asm.GetType(asm.GetName().FullName + "." + obj.ToString());
page = Activator.CreateInstance(t_form) as Page;
try
{
await Application.Current.MainPage.Navigation.PushAsync(new page());
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
finally
{
}
}
我有一个从Command加载的菜单元素。在obj中,我传递了包含所选内容页面名称的字符串。我不知道如何将字符串名称转换为页面对象名称。此代码无效。我正在尝试动态调用页面。
尝试一下:
var pageType= Type.GetType($"NamespaceOfYourView.{obj}");
var page = Activator.CreateInstance(pageType) as Page;
await Application.Current.MainPage.Navigation.PushAsync(page );
用asm.GetName().Name
替换asm.GetName().FullName
;
GetName()。Name:“您的名称空间”
GetName()。FullName:“您的命名空间,版本= 1.0.0.0,区域性=中性,PublicKeyToken =空”
显然,Name
字符串是正确的字符串。