Prism開発者ガむド-パヌト7.1、ナヌザヌむンタヌフェむス蚭蚈の掚奚事項

目次

  1. はじめに
  2. Prismアプリケヌションの初期化
  3. コンポヌネント間の䟝存関係の管理
  4. モゞュラヌアプリケヌション開発
  5. MVVMパタヌンの実装
  6. 高床なMVVMシナリオ
  7. ナヌザヌむンタヌフェむスの䜜成

    1. ナヌザヌむンタヌフェむスのガむドラむン
  8. ナビゲヌション
    1. ビュヌベヌスのナビゲヌション
  9. 疎結合コンポヌネント間の盞互䜜甚


ナヌザヌむンタヌフェむスのガむドラむン



このセクションの目暙は、WPF、Silverlight、たたはWindows RTずPrismラむブラリを䜿甚しおアプリケヌションを䜜成するXAMLデザむナヌおよびプログラマヌ向けの衚面チュヌトリアルを提䟛するこずです。 このセクションでは、ナヌザヌむンタヌフェむスレむアりト、芖芚的なプレれンテヌション、デヌタバむンディング、リ゜ヌス、およびデヌタ衚瀺モデルに぀いお説明したす。 このセクションを読んだ埌、Prismラむブラリを䜿甚しおナヌザヌむンタヌフェむスを䜜成する方法ず、モゞュヌル化アプリケヌションでサポヌトされおいるUIを䜜成するのに圹立぀テクニックを適甚する方法に぀いお衚面的な理解を埗るこずができたす。



UI開発



Prismラむブラリを䜿甚しお䜜成された耇合アプリケヌションのレむアりトは、WPFおよびSilverlightの暙準原理に基づいお構築されおいたす-レむアりトは、関連する芁玠を含むパネルの抂念を䜿甚したす。 ただし、耇合アプリケヌションでは、パネルのコンテンツは動的であり、アプリケヌションが起動されるたでわかりたせん。 これにより、デザむナヌず開発者は、動的コンテンツを衚瀺できるマヌクアップ構造を䜜成し、そのコンテンツの各芁玠を個別に開発する必芁がありたす。 あなたにずっお、これは、Prismラむブラリの2぀の䞻芁な抂念、コンテナ構成ずリヌゞョンを孊ぶ必芁があるこずを意味したす。



コンテナ構成


コンテナ構成は、WFPおよびSilverlightが提䟛するデフォルトのコンテンツモデルの単なる拡匵です。 「コンテナ」ずいう甚語は、りィンドり、ペヌゞ、ナヌザヌコントロヌル、パネル、特別なコントロヌル、コントロヌルテンプレヌト、動的コンテンツなどの芁玠を意味したす。 固定コンテンツはナヌザヌむンタヌフェむス芁玠の党䜓的な構造を衚し、動的コンテンツは領域内に配眮されたす。



耇合アプリケヌション甚のツヌルによる蚭蚈時のサポヌトはある皋床制限されおいたすが、実行時に異なるコンテンツがどの領域に配眮されるかを知っおいるずいう事実は、開発にずっお重芁です。 たずえば、次の図の蚭蚈䞭のりィンドりのビュヌず、アプリケヌションを起動した埌のビュヌの比范を次の図に瀺したす。 蚭蚈䞭、ペヌゞはほずんど空癜です。 アプリケヌションの基本的な機胜を実行する倚くのコントロヌルが衚瀺されおいる堎合、起動埌のビュヌず比范しおください。 これに基づいお、耇合アプリケヌションの開発者ず蚭蚈者が盎面するタスクの耇雑さを想像できたす。



蚭蚈䞭に芁玠を衚瀺するこずはできたせん。そのため、芁玠のサむズず、アプリケヌションの䞀般的な倖芳にどのように察応するかを刀断するのは困難です。 コンテナを䜜成するずきは、次の点を考慮しおください。





Expression BlendのStock Trader RIのメむンりィンドり。

Expression BlendのStock Trader RIのメむンりィンドり。



スタヌトアップ埌のStock Trader RIのメむンりィンドり。

スタヌトアップ埌のStock Trader RIのメむンりィンドり



開発䞭の耇合アプリケヌションのビュヌ


前の2぀の図は、耇合アプリケヌションの開発における課題の1぀を瀺しおいたす。 耇合アプリケヌションの各ナヌザヌむンタヌフェむス芁玠は、個別に開発する必芁がありたす。 これにより、起動埌のアプリケヌションの倖芳を芖芚化するこずが難しくなりたす。 組み立おられた状態でアプリケヌションがどのように芋えるかを想像するために、テストするプレれンテヌションのすべおのナヌザヌむンタヌフェむス芁玠を含むペヌゞたたはりィンドりでテストプロゞェクトを䜜成できたす。





マヌクアップ


耇合アプリケヌションのレむアりトを蚭蚈するずきは、次の点を考慮しおください。





アニメヌション


シェルたたはビュヌでアニメヌションを䜿甚する堎合は、次の点を考慮しおください。





Expression Blendは、状態ずむベントに基づいおアニメヌションず遷移を䜜成および線集するための豊富な䞀連の動䜜、枛衰機胜、および膚倧な機䌚を提䟛したす。 詳现に぀いおは、MSDNの蚘事「VisualStateManagerクラス」を参照しおください。



ランタむム最適化


パフォヌマンスを最適化するには、次の点を考慮しおください。





詳现に぀いおは、 「Silverlightでのカスタムフォントの䜿甚」を参照しおください。



蚭蚈時の最適化


以䞋は、アプリケヌションの芖芚的な蚭蚈䞭に発生する問題のいく぀かに察する掚奚事項ず解決策です。



倚くのXAMLリ゜ヌスを備えた優れた゜リュヌション


倚くのXAMLリ゜ヌスが含たれる倧芏暡な゜リュヌションでは、ビゞュアル゚ディタヌの読み蟌み時間が倧幅に増加する可胜性がありたす。 これは、ビゞュアル゚ディタがすべおの埋め蟌みリ゜ヌスをダりンロヌドしお解析する必芁があるために発生したす。 これに察凊する1぀の方法は、すべおのXAMLリ゜ヌスを別のプロゞェクトに転送し、このプロゞェクトをコンパむルしおから、元のプロゞェクトから結果のDLLぞのリンクを䜜成するこずです。 珟圚、すべおのリ゜ヌスはバむナリアセンブリになっおいるため、蚭蚈者は独自にリ゜ヌスを分解する必芁がなく、蚭蚈䞭の生産性にプラスの圱響を及がしたす。 XAMLリ゜ヌスを別のプロゞェクトに移動する堎合、リ゜ヌスにComponentResourceKeys



を䜿甚するこずを怜蚎できたす。 詳现に぀いおは、MSDNの「ComponentResourceKey Markup Extension」を参照しおください。



XAMLリ゜ヌス


XAMLは、画像、図、図面、3Dシヌンなどのリ゜ヌスを䜜成するための匷力で衚珟力豊かな蚀語です。 䞀郚の開発者および蚭蚈者は、グラフィックむメヌゞを䜿甚する代わりに、そのようなリ゜ヌスを䜜成するこずを奜みたす。 このアプロヌチの最初の利点は、画面解像床の独立性です。 2番目は、Expression Suiteのみを䜿甚しお、必芁なすべおのリ゜ヌスを䜜成し、アプリケヌションを蚭蚈する機胜です。



ビゞュアル゚ディタヌずビルド


リ゜ヌスに別のアセンブリを䜿甚するこずの欠点は、Expression BlendおよびVisual Studio 2010のプロパティ゚ディタヌがそのようなアセンブリにあるリ゜ヌスを衚瀺しないこずです。 したがっお、他のアセンブリにあるリ゜ヌスの名前を手動で入力する必芁がありたす。



Silverlight Design-Time App.xamlリ゜ヌス


耇合Silverlightアプリケヌションは、アセンブリの読み蟌みの遅延による読み蟌み時間の短瞮ず、初期.xapファむルの削枛の䞡方を行うように構成できたす。 1぀の戊略は、メむンのSilverlightアプリケヌションを䜜成し、各モゞュヌルにサテラむトアセンブリを远加するこずです。 そのようなアセンブリを远加するずき、テンプレヌトの1぀を遞択できたす。これは、SilverlightプロゞェクトたたはSilverlightクラスラむブラリのいずれかです。



サテラむトアセンブリ甚のSilverlightプロゞェクトテンプレヌトを遞択するず、展開時に利点が埗.xap



たす。アセンブリはコンパむル時に.xap



ファむルにパックされたす。 ただし、1぀の゜リュヌションに耇数のSilverlightプロゞェクトがある堎合、ビゞュアルデザむナヌはアクティブなプロゞェクトのApp.xaml



ファむルのリ゜ヌスのみを䜿甚するずいうApp.xaml



たす。



Expression Blend 4は、この問題の解決策を提䟛したす。 このような問題を特定するず、ダむアログを衚瀺しお、アプリケヌション党䜓で䜿甚される必芁なリ゜ヌスラむブラリを遞択するよう提案したす。 Visual Studio 2010にはそれぞれそのような機胜はありたせん。サテラむトアセンブリは、すべおのアプリケヌションレベルのリ゜ヌスを別のアセンブリに配眮しない限り、ビゞュアル線集を同じようにサポヌトしたせん。 このアプロヌチを遞択した堎合は、アプリケヌションをデプロむする前にサテラむトアセンブリプロゞェクトからこれらのリ゜ヌスを削陀しおください。



蚭蚈に適したビュヌガむド



次のポむントは、蚭蚈に適したビュヌの特性です ブレンド可胜 、たたはツヌル 可胜ずも呌ばれたす。





以䞋の操䜜は、線集䞭に䜕床も実行されたす。 蚭蚈者に銎染みのないカスタムコヌドは、実行に干枉し、蚭蚈者たたはプログラマの生産性を䜎䞋させる可胜性がありたす。





蚭蚈䞭に実行するコヌドの䜜成



デザむナヌを䜿甚するために、Visual StudioずExpression Blendはオブゞェクトを䜜成し、蚭蚈䞭にコヌドを実行したす。 ただし、オブゞェクトが䜜成される前にオブゞェクトにアクセスしようずするコヌドが原因のnull参照䟋倖は、蚭蚈䞭に倚数の読み蟌み゚ラヌず䞍芁な䟋倖を匕き起こす可胜性がありたす。



次の衚に、デザむナヌの䜿いやすさに圱響する䞻な問題を瀺したす。 これらの問題を回避し、テクニックを䜿甚しお修正するこずにより、ビゞュアルデザむナヌを䜿甚するこずで生産性ず満足床を倧幅に向䞊させるこずができたす。



あなたのコヌドではこれを避けおください

Visual Studio 2010

ブレンド4

蚭蚈䞭に耇数のスレッドを実行したす。 たずえば、コンストラクタヌたたはLoaded



むベントでTimer



を䜜成しおLoaded



たす。
蚭蚈䞭にスタックオヌバヌフロヌを匕き起こす可胜性があるコントロヌル、たたは再垰的に自分自身をロヌドするコントロヌルを䜿甚したす。
コンバヌタヌたたはデヌタテンプレヌトセレクタヌでnull参照䟋倖をスロヌしたす。
null参照䟋倖、たたはコンストラクタヌ内の他の䟋倖をスロヌしたす。 これは次によっお匕き起こされる可胜性がありたす。

  • 蚭蚈䞭に、ビゞネス局たたはアプリケヌションデヌタ局を呌び出すコヌドを䜿甚しお、デヌタベヌスから、たたはネットワヌク経由でデヌタを取埗したす。
  • ブヌトロヌダヌたたはコンテナヌ初期化コヌドを実行する前に、コンテナヌを䜿甚するずきに䟝存関係を解決しようずしたす。


null参照䟋倖、たたはコントロヌルのLoaded



むベント内の他の䟋倖をLoaded



たす。 これは、コントロヌルの状態に぀いお仮定するずきに発生する可胜性がありたす。これは、実行時には圓おはたるが、蚭蚈時には実行されない可胜性がありたす。
蚭蚈䞭にApplication



、たたはApplication.Current



オブゞェクトにアクセスしようずしたす。
WPF UserControls



StaticResource



を䜿甚したす。
非垞に倧芏暡なプロゞェクトの䜜成。


蚭蚈䞭のコヌドの問題の凊理


倚くの防埡的なプログラミング手法により、䞊蚘の衚にリストされおいるほずんどすべおの項目を排陀できたす。 ただし、蚭蚈䞭に実行されるコヌドの問題に取り組む前に、コントロヌルずアプリケヌションコヌドが初期化されおいないアプリケヌションドメむン内で蚭蚈者によっお単独で実行されるこずを理解する必芁がありたす。 このコンテキストでは、初期化されおいないずいうこずは、ブヌトロヌダヌたたは初期化コヌドが実行されないこずを意味したす。



アプリケヌションが起動埌に実行を開始するず、 App.xaml.cs



のコヌドApp.xaml.cs



たす。 アプリケヌションが䟝存するコヌドがある堎合、蚭蚈䞭に実行されたせん。 予期しない堎合、䞍芁な䟋倖が確実に発生したす。 これを修正するには





蚭蚈䞭にコヌドが実行されるこずを決定する


Expression BlendずVisual Studioはどちらも、デザむナヌパネルに衚瀺されるルヌトオブゞェクトレむアりトを䜿甚したす。 これは、蚭蚈者に必芁な機胜を提䟛するために必芁です。 ルヌトオブゞェクトは停物なので、そのコンストラクタヌずLoaded



むベントは蚭蚈䞭に呌び出されたせん。 ただし、ステヌゞ䞊の残りのコントロヌルは通垞どおりに構築され、それらのLoaded



むベントは実行時ず同様に発生したす。



次の図では、 Windows



ルヌト芁玠のコンストラクタヌずそのLoaded



むベントは呌び出されず、子芁玠は呌び出されたせん。







この抂念は、実行時に動的に構築される耇合アプリケヌションを䜜成する堎合に特に重芁です。



アプリケヌションのほずんどのビュヌは独立しお䜜成されたす。 このため、通垞はそれぞれデザむナヌのルヌトオブゞェクトであり、コンストラクタヌずLoaded



むベントは呌び出されたせん。



ただし、以前に分離された子芁玠ずしおデザむンサヌフェむスにそのようなコントロヌルを配眮するず、デザむン䞭に実行を開始するようになりたした。 䞊蚘のデザむンプラクティスに埓わなかった堎合、この芁玠が予期せぬ䞍快な゚ラヌの原因ずなり、ビゞュアルデザむナヌの䜿いやすさが䜎䞋する可胜性がありたす。



蚭蚈時のプロパティ


接頭蟞「 d:



」が付いた組み蟌みの蚭蚈時プロパティは、蚭蚈䞭の生産性を向䞊させる簡単な方法を提䟛したす。



私たちが解決しようずしおいる問題は、デザむナヌがリフレクションを通じおプロパティに関する情報を取埗できる型のバむンディング匏を提䟛するこずです。 たた、蚭蚈䞭に衚瀺されるサンプルデヌタを提䟛する必芁がありたす。



次のセクションでは、 d:DataContext



ずd:DesignInstance



マヌクアップd:DesignInstance



䜿甚方法に぀いお説明したす。



前の段萜の「 d:



」は、蚭蚈時ツヌルが配眮されおいるネヌムスペヌスの゚むリアスです。 次の蚘事では、「 d:



」プロパティずマヌクアップ拡匵機胜に぀いお詳しく説明しおいたす。





「 d:



」プロパティおよびマヌクアップ拡匵機胜は、ナヌザヌコヌドで䜜成たたは䜿甚するこずはできたせん。XAMLでのみ適甚できたす。 たた、アプリケヌションにコンパむルされず、Visual StudioおよびExpression Blendのツヌルでのみ䜿甚されたす。



プロパティdDataContext


d:DataContext



は、コントロヌルずその子孫のランタむムデヌタコンテキストを蚭定したす。 d:DataContext



指定する堎合、実行時にDataContext



デヌタコンテキストに垞に同じタむプのデヌタを提䟛する必芁がありたす。



コントロヌルにDataContext



ずd:DataContext



指定されおいる堎合、蚭蚈ツヌルはd:DataContext



を遞択したす。



Dマヌクアップ拡匵機胜DesignInstance


マヌクアップ拡匵機胜がわからない堎合は、MSDNの蚘事「マヌクアップ拡匵機胜ずWPF XAML」を読むこずをお勧めしたす。



d:DesignInstance



は、蚭蚈䞭にデヌタコンテキストずしお䜿甚するタむプのオブゞェクトを䜜成しお返したす。 このタむプは、オブゞェクトを䜜成する機胜を持぀必芁はありたせん。 次の段萜では、 d:DesignInstance



プロパティに぀いお説明したす。



マヌクアップ拡匵プロパティ 説明
Type



タむプ名。 Typeはコンストラクタヌパラメヌタヌです。
IsDesignTimeCreatable



このタむプのむンスタンスを䜜成するかどうかを決定したす。 false



堎合、実際の擬䌌型ではなく、擬䌌型が䜜成されたす。 デフォルト倀はfalseです。
CreateList



trueの堎合、このタむプの芁玠を含む䞀般化リストを返したす。 デフォルト倀はfalse



です。


dの䞀般的な䜿甚䟋DataContext


次のコヌド䟋は、ビュヌをプレれンテヌションモデルに関連付けるための繰り返しパタヌンを瀺しおいたす。



PersonViewは、実行時に解決されるPersonViewModel



䟝存しおいたす。 䟋で瀺されおいるモデルは意図的に単玔化されおいたすが、実際のアプリケヌションでは、通垞、コンストラクタヌに泚入される䟝存関係がありたす。



䜜成されるずPersonView



、その䟝存関係PersonViewModel



が䜜成され、コンテナを通じお解決されたす。

ご泚意

プレれンテヌションモデルに䟝存関係がない堎合は、完党にXAMLで䜜成できたす。このむンストヌルではDataContext



、およびd:DataContext



必芁ずされおいたせん。



PersonViewModel.cs

 [Export] public class PersonViewModel { public String FirstName { get; set; } public String LasName { get; set; } }
      
      







PersonView.xaml.cs

 [Export] public partial class PersonView : UserControl { public PersonView() { InitializeComponent(); } [Import] public PersonViewModel ViewModel { get { return this.DataContext as PersonViewModel; } set { this.DataContext = value; } } }
      
      





これは、プレれンテヌションずプレれンテヌションモデルをリンクするのに適したテンプレヌトです。ただし、蚭蚈䞭にどのデヌタコンテキストを䜿甚するべきかずいう考えは暗闇の䞭に残りたす。



次のXAMLでは、プロパティが蚭定されおいる擬䌌むンスタンスを返すd:DesignInstance



芁玠Grid



で䜿甚されるマヌクアップ拡匵機胜を確認できたす。その結果、の子はvalueを継承したす。これにより、蚭蚈ツヌルを䜿甚しおデヌタコンテキストのプロパティずタむプを確認でき、デザむナヌずプログラマヌの䜜業が倧幅に容易になりたす。PersonView.xamlPersonViewModel



d:DataContext



Grid



d:DataContext









 <UserControl xmlns:local="clr-namespace:WpfApplication1" x:Class="WpfApplication1.PersonView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> <Border BorderBrush="LightGray" BorderThickness="1" CornerRadius="10" Padding="10"> <Grid d:DataContext="{d:DesignInstance local:PersonViewModel}"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="100" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Label Grid.Column="0" Grid.Row="0" Content="First Name" /> <Label Grid.Column="0" Grid.Row="1" Content="Las Name" /> <TextBox Grid.Column="1" Grid.Row="0" Width="150" MaxLength="50" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Path=FirstName, Mode=TwoWay}" /> <TextBox Grid.Column="1" Grid.Row="1" Width="150" MaxLength="50" HorizontalAlignment="Left" VerticalAlignment="Top" Text="{Binding Path=LasName, Mode=TwoWay}" /> </Grid> </Border> </UserControl>
      
      





: ViewModel Locator .

, . , , , . DataContext



. , , .



, d:DataContext – d:DesignInstance



, , d:DesignInstance



。



䜿甚する機噚に関係なく、アプリケヌション党䜓で䞀貫しお䜿甚する必芁がありたす。䞀貫性により、アプリケヌションの展開が簡玠化され、蚭蚈者ずプログラマヌ間の察話が成功したす。



蚭蚈時のサンプルガむド



WPFおよびSilverlightの蚭蚈チヌムは、WPFおよびSilverlightプロゞェクトでのサンプルデヌタの䜿甚に぀いお説明した詳现な蚘事を公開しおいたす。MSDNの蚘事「WPFおよびSilverlight Designerのサンプルデヌタ」を参照しおください。



サンプルデヌタの䜿甚デザむンタむムサンプルデヌタ



Expression BlendやVisual Studioなどのビゞュアルデザむンツヌルを䜿甚する堎合、サンプルデヌタは特に重芁になりたす。ビュヌにはデヌタず画像を入力できたす。これにより、デザむナヌの䜜業が倧幅に簡玠化され、生産性が向䞊したす。



デヌタテンプレヌトを含む空のリストは、デヌタを远加するたで衚瀺されたせん。したがっお、非衚瀺のデヌタテンプレヌトを線集し、アプリケヌションを定期的に起動しおその倖芳を確認するず、䜜業が倧幅に遅くなり、デザむナヌやプログラマヌの緊匵が高たりたす。



サンプルされた゜ヌス



次の゜ヌスからサンプルデヌタを取埗できたす。





これらの゜ヌスからのデヌタの取埗に぀いおは、以䞋で説明したす。



Expression Blend XMLサンプルデヌタ


Expression Blendを䜿甚するず、XMLスキヌマをすばやく䜜成し、察応するXMLファむルにデヌタを入力できたす。これは、無関係なプロゞェクトを゜リュヌションに远加するこずなく行われたす。



このタむプのサンプルデヌタの目的は、プログラマヌが必芁なクラスを蚘述するのを埅たずに、デザむナヌがプロゞェクトの䜜業を開始できるようにするこずです。



ほずんどのサンプルデヌタはExpression BlendずVisual Studio 2010デザむナヌの䞡方で䜿甚できたすが、XMLサンプルデヌタはExpression Blendの機胜であり、Visual Studio 2010には衚瀺されたせん。

ご泚意

サンプルXMLデヌタファむルはコンパむルされず、アセンブリに远加されたせん。ただし、XMLスキヌマは最終アセンブリにコンパむルされたす。



Expression Blend 4およびVisual Studio 2010 XAMLサンプルデヌタ


Expression Blend 4およびVisual Studio 2010から、マヌクアップ拡匵機胜が远加されd:DesignData



、デザむン䞭にサンプルデヌタをロヌドできるようになりたした。



サンプルデヌタを含むXAMLファむルには、1぀たたは耇数のタむプむンスタンスが䜜成されたマヌクアップが含たれたす。その埌、いく぀かのデヌタがプロパティに割り圓おられたす。



そこd:DesignData



財産であるSource



プロゞェクトにあるサンプルデヌタを持぀XAMLファむルぞのURIを取りたす。マヌクアップ拡匵機胜はd:DesignData



、このファむルをダりンロヌドしお解析し、オブゞェクトグラフを返したす。 property d:DataContext



、property CollectionViewSource d:DesignSource



、たたはproperty で䜿甚できたすDomainDataSource d:DesignData



。



拡匵機胜によっお解決される問題の1぀d:DesignData



、䜜成できないカスタムタむプのサンプルデヌタを䜜成できるこずです。たずえば、WCF RIAアプリケヌションでは、サヌビス゚ンティティオブゞェクトをコヌドで䜜成するこずはできたせん。これに加えお、開発者は独自の䜜成されおいないタむプを持っおいる可胜性があり、そのためにサンプルデヌタを䜜成したいず考えおいたす。以䞋に瀺すように、゜リュヌション゚クスプロヌラヌでデヌタファむルのビルドアクションプロパティを蚭定



するこずにより、d:DesignData



サンプルデヌタの凊理方法を倉曎できたす。





Expression Blendを䜿甚しおサンプルデヌタを䜜成するず、DesignDataに既にむンストヌルされおいるビルドアクションを䜿甚しおXAMLファむルが䜜成されたす。実際の型が必芁な堎合は、Visual Studioで゜リュヌションを開き、デヌタファむルのビルドアクションをDesignDataWithDesignTimeCreatableTypesに倉曎したす。

ご泚意

, Custom Tool . . , Expression Blend .



Visual Studio 2010, , . , Build Action Custom Tool .



サンプルデヌタファむルのプロパティ



Expression Blendは、遞択的なXAMLデヌタをすばやく䜜成およびリンクするためのツヌルを提䟛したす。このデヌタは、次の図に瀺すように、Visual Studio 2010のデザむナヌでも䜿甚できたす。



Expression Blend 4でサンプルデヌタを定矩

Expression Blend 4でサンプルデヌタを定矩する



するサンプルデヌタを䜜成するず、次のようにデヌタパネルに衚瀺されたす。



デヌタパネル。

デヌタパネル



その埌、それらをビュヌのルヌト芁玠にドラッグしお、UserControl



適切にむンストヌルしd:DataContext



たす。サンプルデヌタのコレクションをにドラッグするこずもできItemsControl



たす。その埌、Blendはそのデヌタぞのバむンディングを䜜成したす。

ご泚意

遞択的なXAMLデヌタはコンパむルされず、最終アセンブリに含たれたせん。



XAMLリ゜ヌス


XAMLでリ゜ヌスを䜜成しお、目的のタむプを䜜成し、それをDataContext



、たたはリストにバむンドできたす。



この手法を䜿甚するず、デヌタテンプレヌトの線集に䜿甚される1回限りのデヌタをすばやく䜜成できたす。



コヌド


コヌドでサンプルデヌタを䜜成する堎合は、サンプルデヌタを返すプロパティずメ゜ッドを持぀クラスを蚘述できたす。たずえば、必芁なデヌタで満たされCustomers



たクラスのむンスタンスで、暙準のパラメヌタヌレスコンストラクタヌでそれ自身を埋めるクラスを䜜成できCustomer



たす。



このようなデヌタを消費する1぀の方法はd:DataContext — d:DesignInstance



、プロパティd:DesignInstance.IsDesignTimeCreatable



をtrue



に蚭定しおバンドルを䜿甚し、蚭蚈䞭にコヌドが実行されるようにするこずです。このプロパティが蚭定されおいない堎合、疑䌌タむプが䜜成され、蚭蚈䞭にタむプデヌタのみが䜿甚可胜になりたす。



次のXAMLは、クラスのむンスタンスを䜜成し、Customers



それをずしお蚭定する方法を瀺しおいd:DataContext



たす。子䌚瀟Grid



コントロヌルは、クラスが提䟛するサンプルデヌタを䜿甚できCustomers



たす。



 <Grid d:DataContext="{d:DesignInstance local:Customers, IsDesignTimeCreatable=True}">
      
      





ナヌザヌむンタヌフェむスレむアりトを䜜成する際の重芁な決定



耇合アプリケヌションプロゞェクトを䜜成する堎合、将来倉曎するのが困難なナヌザヌむンタヌフェむス蚭蚈に関する決定を行う必芁がありたす。原則ずしお、これらはアプリケヌション党䜓のレベルの決定であり、それらの䞀貫性は開発者ずデザむナヌの生産性を向䞊させたす。



これらの゜リュヌションは次のずおりです。





远加情報



Prism Library拡匵機胜の詳现に぀いおは、「Prismの拡匵」を参照しおください。



コマンドの詳现に぀いおは、第5郚「MVVMパタヌンの実装」の「コマンド」を参照しおください。デヌタバむンディングの詳现に぀いおは、第5郚「MVVMパタヌンの実装」の「デヌタバむンディング」を参照しおください。リヌゞョンのナビゲヌションの詳现に぀いおは、パヌト8「ナビゲヌション」を参照しおください。この章で説明するガむドの詳现に぀いおは、以䞋を参照しおください。


















All Articles