最初に、必要なコンポーネントを特定する必要があります。主に、LeftSideナビゲーションペイン、TopSideナビゲーションペイン、およびMainContentペインの3つのコンポーネントが表示されます。最初にMainContentペインについて説明します。これを行うための最良の方法は、これを動的に作成するためにバインディングと日付のテンプレートを使用することだと思います。ViewModelまたはDataContextには、MainContentに表示するコンテンツを表すプロパティが必要です。これを呼び出すとMainContent
、MainContentビューがになりContentControl
、プロパティContent
バインディングがViewModelに設定されます。MainContent
財産。このように、表示するクラス項目ごとにDataTemplateを設定するだけで済みます。他の方法は、タブコントロールを使用してControlTemplateを変更することです。この方法は、表示するすべてのコンテンツを事前に定義する必要があるため、動的ではありません。
これで、ナビゲーションペインに任意のコントロールを使用できます。たとえば、ラジオボタンを使用してControlTemplateを変更し、コマンドを使用してビューモデルのロジックを作成できます。
そして今、Grid
またはの使用は、DockPanel
アプリケーションに実行させたいことによって異なります。動的な幅が必要な場合は、を使用する必要がありGrid
ますGridSplitter
が、固定の幅が必要DockPanel
な場合は、よりも少し効率的/高速であるため、を使用できますGrid
。
この回答がお役に立てば幸いです。混乱しないでください。疑問がある場合はフィードバックしてください。
編集
たとえば、ビューモデルでは次のようになります。
public class MainViewModel:INotifyPropertyChanged
{
public object Content {get; set;} //Here you must to raise the PropertyChanged event
private ICommand _showSummaryCommand
public ICommand ShowSummaryCommand
{
get { return new _showSummaryCommand ?? (_showSummaryCommand = new SomeCommandImplementation((sender,e)=>{Content = new SummaryViewModel()},true))} //most of commands implementations recive two parameters, an delegate to execute and a bool delegate for can excecute
}
}
ビューについては、いくつかのリソース辞書で:
<DataTemplate TargetType="{x:Type ViewModels:SummaryViewModel}">
<DataGrid>
<!--Here goes what ever you want to show for instace-->
<TextBlock x:Name="descriptionText" Text={Binding Description}/>
</DataGrid>
</DataTemplate>
そして、あなたがすべての内容を示すであろう場所で
<!--....-->
<ContentControl Content={Binding Content}/>
<!--....-->
このコードがもう少し役立つことを願っています:)