1

Windows phone で比較的大きなアプリケーションを設計している場合、Uris を介して移動するのは少し面倒なので、次のような簡単な方法を書きました。

void Navigate(string Frame)
{
       NavigationService.Navigate(new Uri(string.Format("/{0}.xaml", 0), UriKind.Relative));
}

問題は、ナビゲーションを行うすべての PhoneApplicationPages にこのコードを含めたいのですが、コピーと貼り付けが唯一のオプションであるかどうか疑問に思っています。通常、ページをクラスから派生させようとします。メソッドと基本クラスから派生しますが、PhoneApplicationPages部分クラスであるため、これは別の苦痛になります。これを達成するための他のより良い方法はありますか、それとも単にコピーして貼り付ける必要がありますか?

ありがとう。

4

3 に答える 3

3

問題はありませんでした。

ベースの PhonePage を作成します。

public class PhoneApplicationPageBase : PhoneApplicationPage
    {
        public void Navigate()
        {

        }
        // Others methods
    }

あなたのページでは、これから派生します:

public partial class Page1 : PhoneApplicationPageBase
    {
        public Page1()
        {
            InitializeComponent();
        }
    }

そしてxamlでも:

<my:PhoneApplicationPageBase
    x:Class="Views.Page1"
    ...>

</my:PhoneApplicationPageBase>

以上。拡張メソッドを作成できます。

 public static class Ext
    {
        public static void Navigate(this Page page, string view)
        {

        }
    }

次に使用this.Navigate("Page2.xaml"

于 2012-04-25T07:21:12.900 に答える
2

基本ページから派生させるプロセスは、最悪の場合でも退屈であるという Roman の意見に同意します。

私は独自の小さな mvvm ツールキットを持っています。これには、(基本的に) uri をページ クラスにマップするナビゲーター サービスが含まれています。アプリケーションの起動時に、ページ クラスを uri にマップします。その後、クラスを指定するだけでビュー (uri) に移動できます。

つまり、アプリ コンストラクターでビューを登録します。

    ViewNavigator.RegisterView<IMainView>(new Uri("/Pages/MainView.xaml", UriKind.RelativeOrAbsolute));

また、コードから次を使用してページに移動できます

    ViewNavigator.Instance.NavigateTo<IMainView>();

ツールキット全体は、ここで説明されているよりも高度です (パラメーターのサポート。XAML を介して同じことを可能にする動作を含む) が、一般的な概念を理解していただければ幸いです。

于 2012-04-25T07:37:56.290 に答える
2

メソッドを静的クラスに引き出してから、呼び出しページを参照として渡すことができます。

public static class Navigator
{
    public static void Navigate(Page page, string frame)
    {
        page.NavigationService.Navigate(new Uri(string.Format("/{0}.xaml", frame), UriKind.Relative));
    }
}

次に、次のように呼び出すだけです。

Navigator.Navigate(this, "NewPage");
于 2012-04-25T07:32:30.393 に答える