Je souhaite ajouter un seul objet de modèle qui a été instancié une fois en XAML et l'ajouter à deux collections différentes (en xaml).XAML - StaticResources dans les initialiseurs de collection
Le code suivant rend bien dans le temps Design Blend, mais je reçois les erreurs suivantes lors de l'exécution:
Pour « Post1 »
objet de type « WpfBlog.Models.Tag » ne peut pas être converti en tapez 'System.Collections.ObjectModel.ObservableCollection`1 [WpfBlog.Models.Tag]'. Erreur à l'objet 'WpfBlog.Admin' dans le fichier de balisage 'WpfBlog; component/Admin.xaml' Ligne XX Position YY.
Si je commente sur « Post1 », je vais cette erreur sur « Post2 »
Impossible d'ajouter l'élément à la propriété « Tags », parce que la propriété ne peut avoir qu'un seul élément enfant si elle utilise une collection explicite marque. Erreur sur l'objet 'System.Windows.StaticResourceExtension' dans le fichier de marquage 'WpfBlog; component/Admin.xaml' Ligne AA Position BB.
<Window.Resources>
<model:Tag x:Key="TDD" Name="TDD" ForeColor="Black" BackColor="White" />
<model:Tag x:Key="Agile" Name="Agile" ForeColor="White" BackColor="Black" />
<model:Tag x:Key="Waterfail" Name="Waterfail" ForeColor="Red" BackColor="White" />
</Window.Resources>
<Window.DataContext>
<local:AdminViewModel>
<local:AdminViewModel.AllTags>
<StaticResource ResourceKey="TDD"/>
<StaticResource ResourceKey="Agile"/>
<StaticResource ResourceKey="Waterfail"/>
</local:AdminViewModel.AllTags>
<local:AdminViewModel.Posts>
<local:PostViewModel Title="Post1">
<local:PostViewModel.Tags>
<StaticResource ResourceKey="TDD" />
</local:PostViewModel.Tags>
</local:PostViewModel>
<local:PostViewModel Title="Post2">
<local:PostViewModel.Tags>
<StaticResource ResourceKey="TDD" />
<StaticResource ResourceKey="Agile" />
<StaticResource ResourceKey="Waterfail" />
</local:PostViewModel.Tags>
</local:PostViewModel>
</local:AdminViewModel.Posts>
</local:AdminViewModel>
<Window.DataContext>
Le code suivant compile, et fonctionne très bien, mais deux balises nom se créé « TDD », donc si je tente de renommer l'étiquette, je dois le faire pour tous les postes, au lieu d'une Tag objet
<Window.Resources>
<model:Tag x:Key="TDD" Name="TDD" ForeColor="Black" BackColor="White" />
<model:Tag x:Key="Agile" Name="Agile" ForeColor="White" BackColor="Black" />
<model:Tag x:Key="Waterfail" Name="Waterfail" ForeColor="Red" BackColor="White" />
</Window.Resources>
<Window.DataContext>
<local:AdminViewModel>
<local:AdminViewModel.AllTags>
<StaticResource ResourceKey="TDD"/>
<StaticResource ResourceKey="Agile"/>
<StaticResource ResourceKey="Waterfail"/>
</local:AdminViewModel.AllTags>
<local:AdminViewModel.Posts>
<local:PostViewModel Title="Post1">
<local:PostViewModel.Tags>
<model:Tag Name="TDD" ForeColor="Black" BackColor="White" />
</local:PostViewModel.Tags>
</local:PostViewModel>
<local:PostViewModel Title="Post2">
<local:PostViewModel.Tags>
<model:Tag Name="TDD" ForeColor="Black" BackColor="White" />
<model:Tag Name="Agile" ForeColor="White" BackColor="Black" />
<model:Tag Name="Waterfail" ForeColor="Red" BackColor="White" />
</local:PostViewModel.Tags>
</local:PostViewModel>
</local:AdminViewModel.Posts>
</local:AdminViewModel>
<Window.DataContext>
Des idées? Je serais capable de l'ignorer et de contourner le problème si Blend ne le rend pas correctement, mais c'est le cas!