Uwp 从另一个xaml页面访问一个xaml页面的按钮
在我的UWP应用程序中,我有三个xaml页面。在第一个xaml页面中,我有一个按钮单击事件。我想从第三页访问此按钮单击事件。可能吗?通常,您可以在页面之间传递参数,如下所示:Uwp 从另一个xaml页面访问一个xaml页面的按钮,uwp,windows-store-apps,win-universal-app,Uwp,Windows Store Apps,Win Universal App,在我的UWP应用程序中,我有三个xaml页面。在第一个xaml页面中,我有一个按钮单击事件。我想从第三页访问此按钮单击事件。可能吗?通常,您可以在页面之间传递参数,如下所示: Frame.Navigate(typeof(TargetPage), 19); 在TargetPage上,覆盖OnNavigatedTo方法,如下所示: protected override void OnNavigatedTo(NavigationEventArgs e) { if (e.Parameter !
Frame.Navigate(typeof(TargetPage), 19);
在TargetPage
上,覆盖OnNavigatedTo
方法,如下所示:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (e.Parameter != null)
{
var myAge = e.Parameter + 3;
}
}
在这种情况下,myAge
变量的值应为19+3=22;
但是,当导航模型提供从多个页面(不传递任何参数)到当前页面的导航时,必须检查e.Parameter
是否为null
此外,最佳实践来自:
如果不使用,参数值可能具有复杂类型
GetNavigationState()。但是,仍应仅使用基本类型
为了避免框架导航导致的内存过度使用
包含参数引用的堆栈。首选的方法是
不传递实际对象,而是传递您需要的标识符
可用于在目标登录页中查找对象。例如
不要传递Customer
对象,而是传递对
CustomerID
,然后在导航完成后查找Customer
完成
如果您熟悉MVVM模式。您可以从其他ViewModels调用方法 例如,如下所示:
public class FirstViewModel:ViewModelBase
{
public RelayCommand buttonClickCmd { get; set; }
public FirstViewModel()
{
buttonClickCmd = new RelayCommand(Click);
}
public void Click()
{
Debug.WriteLine("Clicked");
}
}
public class ThirdViewModel:ViewModelBase
{
public RelayCommand ClickFromFirstCmd { get; set; }
public ThirdViewModel()
{
ClickFromFirstCmd = new RelayCommand(Click);
}
public void Click()
{
FirstViewModel firstviewmodel = new FirstViewModel();
firstviewmodel.Click();
}
}
您可以查看更多详细信息。您可以分享您迄今为止所做的工作吗?有解决方案,但更重要的是:您不应该需要或想要这个,