2017-02-28 123 views
0

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

+5

您可以分享您迄今为止所做的工作吗? – mindOfAi

+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,导航完成后是 。

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?了解更多详情。

相关问题