在我的UWP应用程序中,我有三个xaml页面。在第一个xaml页面,我有一个按钮点击事件。我想从第三页访问此按钮单击事件。有可能吗?
答案 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?了解详情。