2017-02-28 12 views
0

私のUWPアプリケーションでは、3つのxamlページがあります。最初のxamlページには、ボタンクリックイベントがあります。 3番目のページからこのボタンのクリックイベントにアクセスしたいと思います。出来ますか ?別のxamlページから1つのxamlページのボタンにアクセス

+5

これまでに行ったことを共有できますか? – mindOfAi

+0

解決策がありますが、もっと重要です:これは必要ない、 –

答えて

0

一般的に、あなたはそのようなページ間のパラメータを渡すことができます。この場合

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    if (e.Parameter != null) 
    { 
     var myAge = e.Parameter + 3; 
    } 
} 

myAge変数の値は19でなければなりません:TargetPageこのようなOnNavigatedToメソッドをオーバーライドするには

Frame.Navigate(typeof(TargetPage), 19); 

を+ 3 = 22; しかし、nullでないかどうかを確認する必要があります。ナビゲーションモデルが複数のページ(パラメータを渡さない)から現在のナビゲーションに移動する場合です。

また、documentationからのベスト・プラクティス:あなたは GetNavigationState()を使用しない場合

パラメータ値は、複合型を持つことができます。ただし、フレームのナビゲーション スタックがパラメータへの参照を保持しているためにメモリが過剰に使用されないようにするには、基本タイプ のみを使用する必要があります。好ましい方法は には実際のオブジェクトを渡さず、代わりに がターゲットランディングページのオブジェクトをルックアップするために使用できる識別子を渡します。たとえば、Customerオブジェクトを渡す代わりに を入力し、 CustomerIDへの参照を渡し、 の完了後にCustomerを参照します。

0

MVVMパターンに精通している場合は、他のViewModelからメソッドを呼び出すことができます。あなたが詳細についてはHow to call functions in a main view model from other view models?をチェックすることができ

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

:次のような例

関連する問題