J'ai un contrôle utilisateur qui héberge d'autres contrôles. La façon dont j'ai mis en œuvre ceci est via des modèles de données qui définissent le contrôle qui doit être associé à un modèle de vue spécifique. Ces vues-modèles ont des propriétés similaires et des déclencheurs d'interaction. Veuillez consulter l'extrait XAML ci-dessous.Est-il possible de consolider des liaisons de données et/ou des déclencheurs similaires dans XAML?
Le problème avec cette approche est que je devrais copier-coller les liaisons de données si je veux supporter un nouveau view-model. Existe-t-il un moyen de consolider toutes les liaisons de données et/ou déclencheurs similaires dans un modèle? Je ne veux pas taper/copier-coller les mêmes définitions de liaison de données dans chaque contrôle. (Oui, je sais, je suis ce paresseux.)
<UserControl.Resources>
<DataTemplate DataType="{x:Type vm:SomeViewModel1}">
<TextBlock Canvas.Left="{Binding Left}"
Canvas.Top="{Binding Top}"
RenderTransform="{Binding Transform}"
Height="{Binding Height}"
Width="{Binding Width}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<cmd:EventToCommand Command="{Binding MouseEnterCommand}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseLeave">
<cmd:EventToCommand Command="{Binding MouseLeaveCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SomeViewModel2}">
<Rectangle Canvas.Left="{Binding Left}"
Canvas.Top="{Binding Top}"
RenderTransform="{Binding Transform}"
Height="{Binding Height}"
Width="{Binding Width}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<cmd:EventToCommand Command="{Binding MouseEnterCommand}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseLeave">
<cmd:EventToCommand Command="{Binding MouseLeaveCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Rectangle>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SomeViewModel3}">
<Button Canvas.Left="{Binding Left}"
Canvas.Top="{Binding Top}"
RenderTransform="{Binding Transform}"
Height="{Binding Height}"
Width="{Binding Width}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<cmd:EventToCommand Command="{Binding MouseEnterCommand}"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseLeave">
<cmd:EventToCommand Command="{Binding MouseLeaveCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SomeViewModel4}">
<!-- Do not want copy-paste code here... -->
</DataTemplate>
</UserControl.Resources>
Veuillez vérifier ce lien. http://stackoverflow.com/questions/1665267/datatemplate-datatypecollectionentity –
Veuillez vérifier ce lien. http://stackoverflow.com/questions/1665267/datatemplate-datatypecollectionentity –
Je pense que c'est pour un problème tout à fait différent. C'est pour une liste d'articles. Mon problème est de traiter des objets de traits similaires. –