2017-02-28 70 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?瞭解更多詳情。

相關問題