从另一个xaml页面访问一个xaml页面的按钮

时间:2017-02-28 08:13:33

标签: uwp windows-store-apps win-universal-app

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

2 个答案:

答案 0 :(得分:0)

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

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

此外,来自documentation的最佳做法:

  

如果不使用,参数值可以是复杂类型   GetNavigationState()。但是,您仍应使用基本类型   为了避免框架导航导致的内存使用过多   堆栈持有参数的引用。一种优选的方法是   不传递实际对象,而是传递您的标识符   可以用来在目标登录页面中查找对象。例如,   而不是传递Customer对象,传递一个引用   CustomerID,然后在导航后查找Customer   完整。

答案 1 :(得分:0)

如果您熟悉MVVM模式。您可以从其他ViewModel调用方法。

例如,如下所示:

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

您可以查看How to call functions in a main view model from other view models?了解详情。