0

ユーザーが作成した UserControl を使用して、レイアウトのようなナビゲーションを実現しようとしています。

Content を Frame Element に設定して Usercontrol をロードする Silverlight ページがあります。

UserControl1 uc1 = new UserControl1();
this.Frame.Content = uc1;

同様に、コンテンツがフレームに設定されている各 UserControl にフレームがあります。

これはうまく機能します。

問題: 私は現在の状況を持っています

                       |UserControl1 | ユーザー コントロール 2 | UserControl3
-------------------------------------------------- -------------------------
ユーザー コントロール 1 | | | 子 |
ユーザー コントロール 2 | 親| |子
UserControl3 | |親 |

だから今私が達成しようとしているのは、ユーザーが UserControl1 から UserControl2 を開いたときに、以前と同じ状態で UserControl2 から親 (UserControl1) に戻ることができる必要があるということです。

これは実際に可能ですか?はいの場合、何をすべきですか?ヒント、コード、記事の参照は大歓迎です...

理由:

ページクエリで変数を渡さないようにし、ユーザーコントロールを使用しようとしています。

シナリオ:

たとえば、ユーザーが UserControl1 内の Textbox に「Hello World」と書き込んでボタンを押した場合、UserControl2 をロードします。UserControl2 で [OK] を押した後、テキスト ボックスに "Hello World" が表示されたまま UserControl1 に戻ります。

私がはっきりしていることを願っています。説明が必要な場合はお知らせください。

乾杯

4

2 に答える 2

0

Yes this is possible, but your controls should not be UserControls, but instead inherit from Page and you should use the Navigate method of the Frame to set the first page

this.Frame.Navigate(new Uri("Page1.xaml", UriKind.Relative));

Then to navigate from page 1 to page 2 use the NavigationService of the Page

NavigationService.Navigate(new Uri("Page2.xaml", UriKind.Relative));
于 2012-08-23T20:57:34.700 に答える
0

これを行う方法の例を次に示します。

List<UserControl> navigationStack = new List<UserControl>();

public void NavigateTo(UserControl newUC)
{
  // when navigating to a new control, keep the old one in memory
  if (this.Frame.Content != null) 
    navigationStack.Add(this.Frame.Content as UserControl);
  this.Frame.Content = newUC;
}

public void NavigateBack()
{
  // when navigating back to an old control in memory, 
  // retrieve it off the navigation stack
  UserControl oldUC = navigationStack.LastOrDefault();
  if (oldUC != null)
  {  
     navigationStack.Remove(oldUC);
     this.Frame.Content = oldUC;
  }
}
于 2012-08-27T06:21:19.547 に答える