Bonjour,

voilà j'ai dans une base, une table "Property" qui contient :
  • un champ Nom
  • Un champ Type
  • Un champ content

(et j'ai mon Model équivalent)

Le champ Type peut avec la valeur "Text", "DateTime", "MultiText", ...

Question : comment afficher dans ma Page, dans un formulaire, le champ associé (si type=Text => TextBox ; si type = DateTime => Calendrier ; ....)

Ma solution :
J'utilise le modèle MVVM que j’aimerai conserver...
Je pensais donc à une espece de factory genre :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
public static class PropertyViewModelFactory
{
....
    public static ViewModelBase getPropertyViewModel(Property property)
    {
        if (property.type == "Text")
            return new PropertyTextViewModel(property);
 
        if (property.type == "DateTime")
            return new PropertyDateTimeViewModel(property);
    }
...
}

et dans mon fichier XAML j'aurai un truc genre :
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<DataTemple DataType={x:Type local:PropertyTextViewModel}>
...
<Label Content="{Binding Nom} />
<TextBox Text={Binding Content} />
..
</DataTemplate>
 
// meme procédé pour les autres types...


qu'en pensez vous ? existe t'il une meilleur méthode ?

Merci de votre aide.