Modèles de données conditionnelles dans WPF
-
05-07-2019 - |
Question
Comment serait-il possible de choisir un modèle de données différent pour l’enregistrement d’un champ dans la source de liaison de données? J'aurais 2 DataTemplates différents
<DataTemplate x:Key="DataTemplateLabel">
<Label Width="60" Height="25" Background="Red">
<TextBlock Text="{Binding Path=Name}"/>
</Label>
</DataTemplate>
<DataTemplate x:Key="DataTemplateTxtBox">
<TextBox Width="60" Height="25" Background="Red" Text="{Binding Path=Text}"/>
</DataTemplate>
if (isText) Ensuite, utilisez DataTemplateTxtBox ELSE, utilisez DataTemplateLabel) Est-ce possible? Merci.
La solution
Vous pouvez créer un DataTemplateSelector
et l'assigner à la propriété ContentTemplateSelector
(ou à ItemTemplateSelector
si elle se trouve dans un ItemsControl
)
Autres conseils
C’est plus une réponse indirecte, mais en faisant du polymorphisme (c’est-à-dire en abandonnant la propriété IsText et en répondant à la question en utilisant un type différent), vous pouvez définir un DataTemplate pour chaque type différent.