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 !

在我的UWP应用程序中,我有三个xaml页面。在第一个xaml页面中,我有一个按钮单击事件。我想从第三页访问此按钮单击事件。可能吗?

通常,您可以在页面之间传递参数,如下所示:

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();
    }
}

您可以查看更多详细信息。

您可以分享您迄今为止所做的工作吗?有解决方案,但更重要的是:您不应该需要或想要这个,