私はMVVM/WPFを初めて使用し、GridコントロールとStackPanelレイアウトコントロールの使い方を知っています。依存性注入:特定のグリッドセルにユーザーコントロールを割り当てる
-------------------------
| Navigation |
-------------------------
| | |
| Summary | Details |
| | |
-------------------------
| Extra Data |
-------------------------
レイアウトを取得したら、正しいセルに正しいビューを取得するにはどうすればよいですか。それぞれの異なる領域(ナビゲーション、要約など)には、独自のView/ViewModelがあります。
私は2つの異なる方法を考えましたが、どちらかが(もしあれば)最良であるかはわかりません。それは良い習慣であるかどうか、そのような
<Grid>
<Row> (Navigation)
<Row>
<Grid>
<Column> (Summary)
<Column> (Detail)
</Grid>
<Row> (Extra)
</Grid>
よう
方法1 埋め込まれて、グリッドは、私はわからないスパニング列を必要とします。
方法2埋め込まビュー
<Grid>
<Row> (Navigation)
<Row> (Summary/Details defined by a another view containing 2 columns)
<Row> (Extra)
</Grid>
もメソッド(または何か他のもの)のいずれかで方法2
用グリッドの代わりにのStackPanelを使用することができますどのように私は何のビューを取得し、どのようなセルを指定していますか?例えば、私はMainWindowViewModelに次き:正しい細胞内の正しいビューを指定するのItemsSourceを活用する方法が
<Window.Resources>
<ResourceDictionary Source="MainWindowResources.xaml" />
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100" />
<RowDefinition Height="*" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<ItemsControl ItemsSource="{Binding ViewModels}" Margin="3" />
</Grid>
だけでわからない:
public MainWindowViewModel()
{
NavigationViewModel navigationViewModel = new NavigationViewModel();
this.ViewModels.Add(navigationViewModel);
SummaryViewModel summaryViewModel = new SummaryViewModel();
this.ViewModels.Add(summaryViewModel);
DetailViewModel detailViewModel= new DetailViewModel();
this.ViewModels.Add(detailViewModel);
ExtraDataViewModel extraDataViewModel = new ExtraDataViewModel();
this.ViewModels.Add(extraDataViewModel);
}
private ObservableCollection<ViewModelBase> _viewModels;
public ObservableCollection<ViewModelBase> ViewModels
{
get
{
if (_viewModels == null)
{
_viewModels = new ObservableCollection<ViewModelBase>();
}
return _viewModels;
}
}
そしてMainWindowViewで、私はこれを持っています。
私はこれをできるだけシンプルにしておきたいので、別のフレームワークをミックスに投入することを躊躇しています。レイアウトは、私が上に示したものより複雑ではなく、私は別のフレームワークが過度のものかもしれないと思います。 – BrianKE