Home > C# > UIパターン > Prism > Prismチュートリアル

Prism Library 5.0 for WPFを使用したビュー切り替えナビゲーションのクイックスタート

新規作成日 2016-06-07
最終更新日

※サンプルコードのダウンロードは、原文リンクから行ってください。

パターンと実践 ディベロパー・センター

View-Switching Navigation QuickStart Using the Prism Library 5.0 for WPF(原文

Microsoft Prism Library 5.0 for WPFの開発者のガイドから:

ビュー切り替えナビゲーションのクイックスタート・サンプルはModel-View-ViewModel(MVVM)パターンによるPrismの領域ナビゲーションAPIを、 どのように使用するかを説明します。Prismの領域ナビゲーションは、Viewの間で切り換えるために、 統一リソース識別子 (URI)アプローチを利用します。QuickStartは、 簡単な電子メール、連絡先とカレンダー・アプリケーションのナビゲーションをシミュレーションします。 左の領域は、中心となるViewの各々にナビゲーションを提供します。 Viewは、後ろへナビゲーションと非同期ダイアログ相互作用を実証します。

ビュー切り替えナビゲーションのクイックスタートは、それが複数のナビゲーション・シナリオを実証するため、 代表的なQuickStartに比べて更に複雑です。ナビゲーションは、かんばん方式のView作成をサポートしています。 そして、したがって、依存関係注入コンテナで相互作用します。さらに、Model-View-ViewModel(MVVM)アプローチと互換性を持っています。 ナビゲーションは、Viewで、そして、View Model(DataContextプロパティを通して)で相互作用します。

このQuickStartは、次のナビゲーション機能を実証します:

  • 領域内で、ビューを操作する
  • もう一つのビュー(入れ子にされたナビゲーション)に含まれている領域のビューを操作します。
  • ナビゲーションジャーナルのサポート、
  • ジャスト・イン・タイム・ビューの作成、
  • ビューに移動するとき、文脈上の情報を渡します。
  • ViewとView Modeは、ナビゲーションを確認、あるいは、キャンセルすることが含まれているナビゲーション内で、関与しています。
  • アプリケーションの部品として、利用するナビゲーションは、モジュール方式とユーザー・インターフェイス(UI)構成を通して構築します。

実際の使い方

Business Scenario

ビュー切り替えナビゲーションのクイックスタートのメイン・ウィンドウは、簡単な電子メール・クライアント・アプリケーションを表示します。 このウィンドウの中で、ナビゲーション枠は、画面の左側に配置され、アプリケーション機能に、直接、アクセスを提供します。 これらの機能は、メール、カレンダーと詳細とアバターViewがある連絡先です。中心となる枠に、選択された機能が、表示されます。 アプリケーションが開始するとき、メール機能が選択されていることに注意します。 これは、Emailモジュールが読み込まれるとき、シェルによって調整されます。

モジュールは、それらの間の依存関係を持っていないので、それらは、ランダムな順序で読み込まれ、そして、初期化されます。 左側の枠の項目が、並べられていることを確認します。ViewSortHint属性も、Viewの各々に適用されます。 ViewSortHint属性の詳細については、連絡先モジュール(入れ子にされたViewへのナビゲーション) (原文)の項目を参照してください。

次に示す図は、クイックスタートのメイン・ウィンドウを示しています。

ビューの切り替えナビゲーションのQuickStartユーザー・インターフェイス

ビューの切り替えナビゲーションのQuickStartユーザー・インターフェイス

備考

QuickStartのUIは、詳細な情報アイコンを持っています。QuickStartの異なる部分について、 あなたは、情報と実装のメモを表示する、あるいは、非表示にするために、それらをクリックすることができます。

QuickStartを構築して、そして、実行する

Building and Running the QuickStart

このクイックスタートは、Microsoft Visual Studio 2012以降と.NET Framework 4.5.1を必要とします。

ビューの切り替えナビゲーションのQuickStartを構築し、そして、実行するために、

  1. Visual Studioでは、ソリューション・ファイルQuickstarts\View-Switching Navigation_Desktop\ ViewSwitchingNavigation.slnを開けます。
  2. Buildメニュー内で、Rebuild Solutionをクリックします。
  3. QuickStartを実行するために、F5を押してください。

実装の詳細

Implementation Details

QuickStartは、あなたが、考慮する必要がある重要な要素を強調します。 複合アプリケーションで、ナビゲーションを実装するために、Prism Libraryで、あなたが、ナビゲーションを使用するとき、機能が提供されます。 この方法では、ユーザー・インターフェイスは、異なるモジュールの間で分割されます。各々のモジュールは、左側のナビゲーション領域を埋め込みます。 そして、ナビゲーション内で、右側の中心となるコンテンツ領域で、Viewを調整するために関与します。 この項目は、QuickStartの重要な成果物を説明します。 次の図は、ユーザーが、1つの場所から他の場所まで、移動するとき、発生する作業の流れが示されています。

Prismの領域ナビゲーション作業の流れ

Prismの領域ナビゲーション作業の流れ

Prism Region Navigation Workflow

Prism Libraryのナビゲーション・サポート

Navigation Support in the Prism Library

Prism Libraryは、領域を使用して、ナビゲーションをサポートしています。 Navigationクラスとコンポーネントは、Microsoft.Practices.Prism.Regions名前空間に配置されます。 次のコードの例に示すように、各々の領域は、INavigateAsyncインターフェイスを実装しています。

C#


public interface IRegion : INavigateAsync, INotifyPropertyChanged
{
    ...
}

IRegionインターフェイスは、領域の間で、ナビゲーションを提供する、NavigationServiceプロパティを提供します。 それぞれ領域は、独自のNavigationServiceを持っています。 そして、それぞれのNavigationServiceは、領域内に、独自の履歴や現在、過去の記録、そして、機能ナビゲーションを持っています。 NavigationServiceは、IRegionNavigationServiceを返します。 IRegionNavigationServiceインターフェイスは、次のコード例で示されます。

C#


public interface IRegionNavigationService : INavigateAsync
{
    IRegion Region { get; set; }

    IRegionNavigationJournal Journal { get; }

    event EventHandler<RegionNavigationEventArgs> Navigating;

    event EventHandler<RegionNavigationEventArgs> Navigated;

    event EventHandler<RegionNavigationFailedEventArgs> NavigationFailed;

}

NavigationServiceは、その関係する領域に参照を持っており、そして、ナビゲーション履歴を参照します。 さらに、それは、NavigatingとNavigatedイベントが含まれています。Navigatingイベントは、ページに移動する間に起動します。 そして、領域が、内容に移動するとき、Navigatedイベントが、発生します。

サービスからのメソッドは、移動するために、RequestNavigateを使用します。 このメソッドは、移動が完了すると、呼び出される、対象とするナビゲーションとコールバックを必要とします。

]

このメソッドは、前述の図の中で説明される、作業の流れを開始します。 それは、ソースとコールバックと一緒に、サービスのDoNavigateメソッドを呼び出します。 それは、続いて、RequestCanNavigateOnCurrentlyActiveViewsを呼び出します。 移動が、成功するかどうかにかかわらず、移動が、終了した時、コールバックは、呼び出されます。 コールバックの後、彼/彼女が、そのViewから移動するとき、 それらが、IConfirmNavigationRequestインターフェイスを実装する場合、 それらが、ユーザーが、プロンプトを表示する、このインターフェイスを実装する場合、 アクティブ・ビューとそれらのView Modelは、決定するために問い合わせます。 最後に、ExecuteNavigationメソッドが、呼び出されます。このメソッドは、次のコード例の中で示されます。

C#


private void ExecuteNavigation(NavigationContext navigationContext, object[] activeViews, Action<NavigationResult> navigationCallback)
{
    try
    {
        NotifyActiveViewsNavigatingFrom(navigationContext, activeViews);

        object view = this.regionNavigationContentLoader.LoadContent(this.Region, navigationContext);

        // Raise the navigating event just before activing the view.
        // Viewをアクティブ化する寸前に、移動しているイベントを呼び出します。
        this.RaiseNavigating(navigationContext);

        this.Region.Activate(view);

        // Update the navigation journal before notifying others of navigaton
        // 他に移動を知らせる前に、ナビゲーション履歴を更新します
        IRegionNavigationJournalEntry journalEntry = this.serviceLocator.GetInstance<IRegionNavigationJournalEntry>();
        journalEntry.Uri = navigationContext.Uri;
        this.journal.RecordNavigation(journalEntry);

        // The view can be informed of navigation
        // Viewは、ナビゲーションを知ることができます。
        InvokeOnNavigationAwareElement(view, (n) => n.OnNavigatedTo(navigationContext));

        navigationCallback(new NavigationResult(navigationContext, true));

        // Raise the navigated event when navigation is completed.
        // ナビゲーションが、完成しているとき、移動されたイベントを呼び出します。
        this.RaiseNavigated(navigationContext);
    }
    catch (Exception e)
    {
        this.NotifyNavigationFailed(navigationContext, navigationCallback, e);
    }
}

前述のメソッドは、ユーザーが、どこかに移動するとアクティブ・ビューに通知し、コンテンツ・ローダーを通して、対象とするViewを取得し、 対象とするViewをアクティブにし、そして、履歴を更新します。 ViewとView Modelは、その後、ユーザーが、それらに移動していると通知されます。コールバックは、呼び出されます。 そして、ナビゲーション完了イベントが、発生します。

履歴

The Journal

履歴は、移動するViewの履歴を保持するスタックです。 それは、訪問したページの前方、現在と後方への履歴を格納します。 RecordNavigationメソッドは、スタックで、現在のViewを登録するために使用されます。 あなたは、履歴Viewの内部で移動する場合、履歴は、Viewをスタックに追加することを避けます。

備考

あなたが、ナビゲーションを実装する前に、それは、あなたが、統一リソース識別子 (URI)構造をアプリケーションに定義することが重要です。

ナビゲーションのためのPrism Libraryを使用して、

Using the Prism Library for Navigation

この項目は、QuickStartが、ナビゲーションを実演するために、どのように、Prism Libraryを使用するかを説明します。 Shellビューは、2つの領域を持っています。: ナビゲーション領域と中心となる領域。 あなたは、次のコードで、ViewSwitchingNavigation\Shell.xamlファイルで配置される領域定義を確かめることができます。

XAML


<Grid x:Name="LayoutRoot"
          Background="{StaticResource MainBackground}">
    ...
        <Border Grid.Column="0" Grid.Row="2" Background="LightGray" MinWidth="250" Margin="5,0,0,5">
            <ItemsControl x:Name="NavigationItemsControl" prism:RegionManager.RegionName="MainNavigationRegion" Grid.Column="0" Margin="5" Padding="5" />
        </Border>
        <ContentControl prism:RegionManager.RegionName="MainContentRegion" 
                        Grid.Column="1" Grid.Row="2" Margin="5,0,5,5" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"/>

    </Grid>
</Grid>

各々のQuickStartモジュール(メール、カレンダーと連絡先)は、 (特定の機能を保持するもの)中心となるコンテンツ領域で、ナビゲーション領域と対応するViewでナビゲーション・ボタンを登録します。

シェルは、電子メール・モジュールが読み込まれるとき、電子メールViewが移動されるために、それが確認するコードが含まれます。 このため、アプリケーションの起動時に、電子メールViewは表示されます。次のコードの項目は、太字で、これを実現して、表示します。

C#


[Export]
public partial class Shell : UserControl, IPartImportsSatisfiedNotification
{
    private const string EmailModuleName = "EmailModule";
    private static Uri InboxViewUri = new Uri("/InboxView", UriKind.Relative);
    public Shell()
    {
        InitializeComponent();
    }

    [Import(AllowRecomposition = false)]
    public IModuleManager ModuleManager;

    [Import(AllowRecomposition = false)]
    public IRegionManager RegionManager;

    public void OnImportsSatisfied()
    {
        this.ModuleManager.LoadModuleCompleted +=
            (s, e) =>
            {
                if (e.ModuleInfo.ModuleName == EmailModuleName)
                {
                    this.RegionManager.RequestNavigate(
                        RegionNames.MainContentRegion,
                        InboxViewUri);
                }
            };
    }
}

Calendarモジュール(他のモジュールへまたいで移動する)

The Calendar Module (Cross-Navigation to Other Modules)

Calendarモジュールは、もう一つの範囲/モジュールに、またいで移動する方法を示します。 次のコード例は、CalendarモジュールのInitializeメソッドを表示します。

C#


public void Initialize()
{
    this.regionManager.RegisterViewWithRegion(RegionNames.MainNavigationRegion, typeof(CalendarNavigationItemView));
}

Initializeメソッドは、CalendarNavigationItemViewビューを登録します。 それは、カレンダー機能を表示するために、使用するボタンです。 CalendarViewビューは、ここで、登録されることができました。 しかし、私たちは、(ナビゲーション間で、ジャストインタイムの作成を通して)領域が利用できるViewを作成するために、異なる仕組みを使用しています。

このボタンのイベントハンドラは、次のコードの例に示すように、 領域の名前を渡して、equestNavigateメソッドを呼び出す領域マネージャーを使用し、そして、URIに移動します。

C#


private void Button_Click(object sender, RoutedEventArgs e)
{            
    this.regionManager.RequestNavigate(RegionNames.MainContentRegion, calendarViewUri);
}

移動が、完了すると、-すなわち、カレンダー・ビューは、中心となる領域で読み込まれるとき、 そして、Navigatedイベントが起動します。-ボタンが、ユーザーに知らせるために確認されます。 中心となる領域に表示されるViewは、カレンダーです。 これは、次のコード例で、示されています。 QuickStartのあらゆるモジュールは、これらのタスクを実行するために、同じようなコードを持っています。

C#


public void MainContentRegion_Navigated(object sender, RegionNavigationEventArgs e)
{
    this.UpdateNavigationButtonState(e.Uri);
}

private void UpdateNavigationButtonState(Uri uri)
{
    this.NavigateToCalendarRadioButton.IsChecked = (uri == calendarViewUri);
}

このQuickStartが、MVVMパターンを実装するため、ロジックは、View Modelクラスに配置されます(ナビゲーション・アイテム・ビューを除外します)。 あなたは、URIsを構築することができます。それは、ViewやView Modelに、コンテキストを渡すクエリ文字列を使用します。 例えば、CalendarビューのView Modelクラスで、ユーザーが、会議をクリックすると、クエリ文字列が、ディスプレイに電子メール・メッセージを識別するために、使用されます。 あなたは、次のコード例で、移動するための、URIの構築と要求を見ることができます。

C#


private void OpenMeetingEmail(Meeting meeting)
{
    var parameters = new NavigationParameters();
    parameters.Add(EmailIdName, meeting.EmailId.ToString(GuidNumericFormatSpecifier));

    this.regionManager.RequestNavigate(RegionNames.MainContentRegion, new Uri(EmailViewName + parameters, Urikind.Relative));
}

前述のコードで、PrismのNavigationParametersクラスを使用して、特定のメールのIDが、指定されます。 このクラスは、問合せに追加されている、問合せパラメータを作成します。名前とパラメータの値を取得することによって、 このクラスのToStringメソッドは、すべての指定されたパラメータで、クエリ文字列を作成するために、上書きされます。 この例は、Query Stringを使用して、文字列のパラメータを渡すために、どのように、NavigationParametersクラスを使用するかを紹介します。 しかし、また、それは、RequestNavigateメソッドのオーバーロードを使用して、オブジェクト・パラメータを渡すために、使用することができます。 最後に、問合せは、Viewの名前に添付されます。結果は、次の図に示されいるものと類似しているでしょう。

複雑なURI構造

複雑なURI構造

A complex URI structure

最後に、RequestNavigateメソッドを使用して、領域は、作成されたUriに移動するでしょう。

Contactsモジュール(入れ子にされたViewへの移動)

The Contacts Module (Navigation to a Nested View)

Contactsモジュールは、他のビューの領域にViewが入れ子になった、ナビゲーションを実演します。 このモジュールのViewは、ナビゲーションに関与するために、INavigationAwareインターフェイスを実装します。 連絡先Viewは、sub-Viewが示される領域を持っています。

連絡先モジュールのため、2つのナビゲーション・アイテム・ビューがあります。: ViewSwitchingNavigation.Contacts\Views\ContactsDetailNavigationItemView.xaml.csファイルに配置される、次のコードで示すように、 1つは、連絡先詳細を表示するための、もう1つは、連絡先アバターを表示するための、それぞれのオプションは、異なるURIとクリック・イベントハンドラを持っています。

C#


[Export]
[ViewSortHint("03")]
public partial class ContactsDetailNavigationItemView : UserControl, IPartImportsSatisfiedNotification
{
    private const string mainContentRegionName = "MainContentRegion";

    private static Uri contactsDetailsViewUri = new Uri("ContactsView?Show=Details", UriKind.Relative);

    ...


    private void NavigateToContactDetailsRadioButton_Click(object sender, RoutedEventArgs e)
    {
        this.regionManager.RequestNavigate(mainContentRegionName, contactsDetailsViewUri);
    }
}

前述のコードで、ViewSortHint属性は、Viewが示す注文を指定するために使用されます。 この場合、ContacstViewNavigationItemは、リストの3番目に配置されています。 並べ替えのヒントの英数字の比較は、注文を決定するために、発生します。 これは、あらゆる実行で同じ注文内の、QuickStartのナビゲーション・ボタンを配置するために使用されます。

ViewやView Modelは、INavigationAwareインターフェイスを実装する必要があります。 それが、ナビゲーション活動を知らせる必要があるとき、そして、それで、それは、URIの問合せを受け取ることができます。 このインターフェイスは、次のナビゲーション・イベントを提供します。

  • IsNavigationTarget。このインスタンスが、ナビゲーション要求を処理できるかを、決定するために呼び出されます。
  • OnNavigatedFrom。実装オブジェクトが、わきへ移動されているときに、呼び出されます。
  • OnNavigatedTo。実装オブジェクトが移動されたとき、呼び出されます。

連絡先Viewは、INavigationAwareインターフェイスを実装しています。連絡先Viewが移動されると、 ナビゲーション・ボタンのどれかを使用して、あるいは、戻ることで、OnNavigatedToイベントは、決定するために使用されます。 sub-Viewは、URI問合せに基づいて、読み込まれます。これは、次のコードで見ることができます。 ViewSwitchingNavigation.Contacts\Views\ContactsView.xaml.csファイルから抜き出されます。

C#


void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
{
    // Navigating an inner region based on context
    // コンテキストに基づいて、内部の領域を移動します。
    // The ContactsView will navigate an inner region based on the
    // value of the 'Show' query parameter.  If the value is 'Avatars'
    // we will navigate to the avatar view otherwise we'll use the details view.

// ContactsViewは、『Show』問合せパラメータの値に基づいて、内部の領域を移動します。
// 値が『Avatars』である場合、私たちは、それ以外の場合に、アバターViewに移動します。
// 私たちは、詳細ビューを使用します。

    NavigationParameters parameters = navigationContext.Parameters;
    if (parameters != null && string.Equals(parameters[ShowParameterName].ToString(), AvatarsValue))
    {
        regionManager.RequestNavigate(ContactsRegionNames.ContactDetailsRegion, new Uri(ContactAvatarViewName, UriKind.Relative));
    }
    else
    {
        regionManager.RequestNavigate(ContactsRegionNames.ContactDetailsRegion, new Uri(ContactDetailViewName, UriKind.Relative));
    }
}

前述のコードで、Viewは、URI問合せのShowパラメータの値に依存して、連絡先Viewの内部の領域に読み込まれます。

最初に行う場合、あなたは、これらのViewのいずれかに移動します。指定されたViewは、NavigationServiceによって作成されるでしょう。

Emailモジュール

The Email Module

E-mail機能は、Viewにナビゲーションを実演します。それは、ユーザー活動に基づいて、追加のナビゲーションを処理します。 このモジュールのView Modelは、ナビゲーションに関与するために、INavigationAwareインターフェイスを実装します。

Emailモジュールでは、ほとんどの操作は、View Modelで実行されます。このモジュールは、3つのViewで構成されます。: メール・リスト(InboxView View)、開いたメール(EmailView View)、そして、 メールの作成(ComposeEmailView View)次のコード例は、メソッドを示します。 それは、New、Reply、Openボタン動作を操作します。それらが、まさしく今、クエリ文字列を作成することに注意します。 そして、その次に、中心となる領域内の、対応するViewに移動します。

C#


private void ComposeMessage(object ignored)
{
    this.regionManager.RequestNavigate(RegionNames.MainContentRegion, ComposeEmailViewUri);
}

private void ReplyMessage(object ignored)
{
    var currentEmail = this.Messages.CurrentItem as EmailDocument;
    if (currentEmail != null)
    {
        var parameters = new NavigationParameters();
        parameters.Add(ReplyToKey, currentEmail.Id.ToString("N"));         this.regionManager.RequestNavigate(RegionNames.MainContentRegion, ComposeEmailViewKey + parameters);
    }
}

private bool CanReplyMessage(object ignored)
{
    return this.Messages.CurrentItem != null;
}

private void OpenMessage(EmailDocument document)
{
    NavigationParameters parameters = new NavigationParameters();
    parameters.Add(EmailIdKey, document.Id.ToString("N"));     this.regionManager.RequestNavigate(RegionNames.MainContentRegion, new Uri(EmailViewKey + parameters, UriKind.Relative));

ComposeEmailViewModelは、ViewやView Modelが、移動されることを扱うかどうかに関係なく、 決定するために使用されるIConfirmNavigationRequestインターフェイスを実装しています。 このインターフェイスは、ConfirmNavigationRequestメソッドを持っています。 それは、ナビゲーション要求の取消しを提供します。構成される電子メール画面では、 ユーザーは、メッセージを記述し始めますが、送信しないかもしれません。 その結果、ユーザーは、彼/彼女が、離れて移動する前に、メッセージを破棄することを望むか、確認を促す必要があります。 次のコードは、ComposeEmailViewModelクラスに、ConfirmNavigationRequestメソッドの実装を示します。 View Modelは、ユーザーを促すために、InteractionRequestを使用します。 そして、ユーザーが確認する場合、continuationCallbackが、パラメータとして渡されるとき、 彼/彼女が、離れて移動することを望むために、移動を継続します。

備考

あなたは、continuationCallback動作を呼び出す必要があります。 あるいは、あなたは、この現在のナビゲーション要求を停止させるでしょう。そして、この要求の更なる処理は行われません。

ComposeEmailViewModelクラスでは、ユーザーが、新しい電子メール・メッセージを作成する、 あるいは、既存のものに返信する場合、OnNavigatedToメソッドは、決定するために使用されます。 ナビゲーション・コンテキストは、Parametersプロパティを通して、コンテクストの情報を提供します。 それは、RequestNavigateメソッド、あるいは、ナビゲーションURIを通じて、渡されるパラメータから、構築されるstring/object辞書です。 次のコードの例では、ReplyToパラメータが、値を含む場合、電子メール・サービスからの関連情報は、応答値を埋め込むために取得されます。 そうでない場合、空の電子メールが表示されます。

C#


void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
{
    var emailDocument = new EmailDocument();
    var parameters = navigationContext.Parameters;
    var replyTo = parameters[ReplyToParameterKey];
    Guid replyToId;
    if (replyTo != null && Guid.TryParse(replyTo, out replyToId))
    {
        var replyToEmail = this.emailService.GetEmailDocument(replyToId);
        if (replyToEmail != null)
        {
            emailDocument.To = replyToEmail.From;
            emailDocument.Subject = Resources.ResponseMessagePrefix + replyToEmail.Subject;

            emailDocument.Text =
                Environment.NewLine +
                replyToEmail.Text
                    .Split(Environment.NewLine.ToCharArray())
                    .Select(l => l.Length > 0 ? Resources.ResponseLinePrefix + l : l)
                    .Aggregate((l1, l2) => l1 + Environment.NewLine + l2);
        }
    }
    else
    {
        var to = parameters[ToParameterKey];
        if (to != null)
        {
            emailDocument.To = to;
        }
    }

    this.EmailDocument = emailDocument;
    this.navigationJournal = navigationContext.NavigationService.Journal;
}

ナビゲーションの履歴は、前述のコードの終わりに、インスタンスを生成することに注意します。 履歴は、先程のViewに移動するために使用されます。 履歴は、移動する履歴の後方に移動することのために、GoBackメソッドを提供します。 これは、ユーザーが、作成した電子メール・メッセージを送信、あるいは、キャンセルしたあと、使用されます。 あなたは、次のコード例の、このメソッドの使用状況を確認することができます。

C#


private void CancelEmail()
{
    if (this.navigationJournal != null)
    {
        this.navigationJournal.GoBack();
    }
}

ユニットと受け入れテスト

Unit and Acceptance Tests

ビューの切り替えナビゲーションのQuickStartには、ソリューション内のユニット・テストが含まれています。 ソース・コードのそれぞれの単位が、予想通りに動作する場合、ユニット・テストは、検証します。

ビュー切り替えナビゲーションのクイックスタートユニット・テストを実行するために、

To run the View-Switching Navigation QuickStart unit tests

  1. ソリューションを構築します。
  2. Test Explorerを開きます。
  3. ソリューションを構築した後、Visual Studioは、テストを捜し出します。 ユニット・テストを実行するために、Run Allボタンをクリックします。

ビューの切り替えナビゲーションのQuickStartには、受入検査が含まれている分離したソリューションが含まれています。 あなたが、処方された連続の手順に従うとき、受入検査では、アプリケーションが、どのように動作する必要があるかを説明します。 あなたは、さまざまな使い方をする、アプリケーションの機能の挙動を調べるために、受入検査を使用することができます。

ビュー切り替えナビゲーションのクイックスタートの受入検査を実行します。

To run the View-Switching Navigation QuickStart acceptance tests

  1. Visual Studioでは、ソリューション・ファイルQuickStarts\View-Switching Navigation_Desktop\ViewSwitchingNavigation.Tests.AcceptanceTest\ViewSwitching Navigation.Tests.AcceptanceTest.slnを開きます。
  2. ソリューションを構築します。
  3. Test Explorerを開きます。
  4. ソリューションを構築した後、Visual Studioは、テストを捜し出します。受入検査を実行するために、Run Allボタンをクリックします。

結論

Outcome

あなたは、ウィンドウのQuickStartを参照する必要があります。 そして、テストは、自動的に、アプリケーションと相互作用します。 テスト実行の終了時に、あなたは、すべてのテストが渡されたことを確かめる必要があります。

詳細情報

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」