Ho un controllo utente che ospita altri controlli. Il modo in cui l'ho implementato è tramite modelli di dati che definiscono il controllo che dovrebbe essere associato a uno specifico modello di visualizzazione. Questi modelli di vista hanno proprietà e trigger di interazione simili. Si prega di consultare lo snippet XAML di seguito.Esiste comunque il consolidamento di associazioni e/o trigger di dati simili in XAML?
Il problema con questo approccio è che dovrei copiare e incollare i binding di dati se voglio supportare un nuovo modello di vista. Esiste un modo per consolidare tutti i collegamenti e/o i trigger di dati simili in un modello? Non voglio digitare/copiare e incollare le stesse definizioni di binding dei dati in ogni controllo. (Sì, lo so, sono così pigro.)
<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>
Si prega di controllare questo link. http://stackoverflow.com/questions/1665267/datatemplate-datatypecollectionentity –
Si prega di controllare questo link. http://stackoverflow.com/questions/1665267/datatemplate-datatypecollectionentity –
Penso che sia per un problema completamente diverso. Questo è per un elenco di elementi. Il mio problema riguarda oggetti di tratti simili. –