Dans MainWindow.xaml J'ai:emplacement ViewModel dans le sous-dossier (XAML, espace de noms)
<Window x:Class="LayoutMVVM.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
ResizeMode="NoResize"
xmlns:local="clr-namespace:LayoutMVVM"
xmlns:veiwmodels="clr-namespace:LayoutMVVM.ViewModels"
xmlns:views="clr-namespace:LayoutMVVM.Views"
Title="Layout" Height="750" Width="650">
Dans Windows.Resources Je suis contraignant datacontext:
<Window.Resources>
<DataTemplate x:Name="SettingsTemp" DataType="{x:Type veiwmodels:SettingsModel}">
<views:SettingsView DataContext="{Binding}" />
</DataTemplate>
</Window.Resources>
Mais quand mon autre modèle et la vue se trouve dans le sous-dossier comme ci-dessous:
Je ne peux pas faire:
<DataTemplate x:Name="OpenTemp" DataType="{x:Type ViewModels:Open.OpenModel}">
<views:Open.OpenView DataContext="{Binding}" />
</DataTemplate>
ou LayoutMVVM.ViewModels.Open.OpenModel
ou LayoutMVVM/ViewModels/Open/OpenModel
correctement voir les choses et il travaille avec votre première réponse – 4est
un de plus: LayoutMVVM.ViewModels -> dans ce cas, il devrait être assigner à DataTemplate directement? – 4est
non, vous déclarez * veiwmodels * dans la balise window xaml, donc dans DataTemplate vous pouvez écrire * DataType = "{x: Type veiwmodels: OpenModel}" * (si l'espace de noms de OpenModel est * LayoutMVVM.ViewModels *) – Digger