首页 文章

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

提问于
浏览
0

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

2 回答

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

相关问题