我希望在XAML中实例化对象,并重复使用这些实例。我认为应该很简单,但我卡住了,可能是我漏掉了一些显而易见的东西。
比如我想将猫添加到不同的房间(Room有一个ObservableCollection,其中包含Cat类型的对象)。在UserControl.Resources中,我创建ObjectDataProviders:
在我的用户控件中,我想将猫添加到房间中:
比如我想将猫添加到不同的房间(Room有一个ObservableCollection,其中包含Cat类型的对象)。在UserControl.Resources中,我创建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>
在我的用户控件中,我想将猫添加到房间中:
<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>
如何将Cat实例添加到ObservableCollection Room.Cats中?例如,我想将Cat1和Cat2添加到Room1,将Cat2和Cat3添加到Room2。我完全错了吗?
<StaticResource ResourceKey="Cat1" />
添加到您的 Cat 列表中来实现此操作。由于我目前没有测试的可能性,因此我只将其添加为注释... - Heinzi<local:Room.Cats>
里面(请参阅http://msdn.microsoft.com/en-us/library/ms668604.aspx中的“关于XAML用法的注释”),然后将`ObjectDataProvider`替换为`Cat`(即`<local:Cat Name="Garfield" x:Key="Cat1">),并将StaticResource添加到指向ObservableCollection中的Cat。但是,这需要你的
Cat`类有一个无参数的构造函数。 - Heinzi