Instancier et de la réutilisation des instances d'objets en XAML

Je veux instancier des objets dans le code XAML, et la réutilisation de ces instances. Je pense que ça doit être simple mais je suis coincé, je suis probablement manquer quelque chose d'évident.

Dire, je veux ajouter des Chats de différentes pièces (Chambre dispose d'une ObservableCollection contenant des objets de type Cat). Dans le UserControl.Ressources-je créer ObjectDataProviders:

<ObjectDataProvider x:Key="Cat1" ObjectType="{x:Type local:Cat}">
    <ObjectDataProvider.ConstructorParameters>
        <System:String>Tom</System:String>
    </ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>
<ObjectDataProvider x:Key="Cat2" ObjectType="{x:Type local:Cat}">
    <ObjectDataProvider.ConstructorParameters>
        <System:String>Garfield</System:String>
    </ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>
<ObjectDataProvider x:Key="Cat3" ObjectType="{x:Type local:Cat}">
    <ObjectDataProvider.ConstructorParameters>
        <System:String>Furball</System:String>
    </ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>

Dans mon UserControl je veux ajouter les Chats, dans les Chambres:

<local:Room x:Name="Room1">
    <local:Room.Cats>

    </local:Room.Cats>
<local:Room>
<local:Room x:Name="Room2">
    <local:Room.Cats>

    </local:Room.Cats>
<local:Room>

Quelle est la syntaxe pour ajouter les instances de Cat à l'ObservableCollection Chambre.Les chats? Par exemple je veux ajouter Cat1 et Cat2 à Room1, et Cat2 et Cat3 à Room2. Suis-je complètement sur la mauvaise voie?

possible de le faire en ajoutant <StaticResource ResourceKey="Cat1" /> à votre liste de Chats. Depuis je n'ai pas la possibilité de tester cela pour le moment, je suis seulement en ajoutant un commentaire...
J'ai essayé, ça compile, mais l'exécution, il donne un XamlParseException: Objet de type 'System.De Windows.Les données.ObjectDataProvider " ne peuvent pas être convertis en type 'System.Les Collections.ObjectModel.ObservableCollection`1[Chat]'
Je vois. La prochaine chose que je voudrais faire est d'essayer de (a) créer une ObservableCollection en XAML à l'intérieur de <local:Room.Cats> (voir les "Notes sur l'utilisation de XAML" dans le msdn.microsoft.com/en-us/library/ms668604.aspx) et ensuite (b) remplacer le ObjectDataProvider par un Cat (c'est à dire <local:Cat Name="Garfield" x:Key="Cat1">) puis ajouter le StaticResource pointant vers le Chat à l'intérieur de votre ObservableCollection. Toutefois, cela nécessiterait de votre Cat classe d'avoir un constructeur sans paramètre.

OriginalL'auteur eriksmith200 | 2010-10-01