我想添加一个模型对象,该对象在XAML中已经实例化了一次,并将其添加到两个不同的集合(在xaml中)。XAML - 集合初始化程序中的StaticResources
下面的代码呈现在Blend中的设计时很好,但我会在运行时出现以下错误:
对于“POST1”
类型的对象“WpfBlog.Models.Tag”不能被转换为键入'System.Collections.ObjectModel.ObservableCollection`1 [WpfBlog.Models.Tag]'。标记文件'WpfBlog; component/Admin.xaml'行XX位置YY中对象'WpfBlog.Admin'时出错。
如果我注释掉“POST1”,我会得到“POST2”这个错误
无法添加元素属性“标签”,因为属性只能有一个子元素,如果它使用一个明确的集合标签。标记文件'WpfBlog; component/Admin.xaml'Line AA Position BB中的对象'System.Windows.StaticResourceExtension'出错。
<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>
下面的代码编译并运行正常,但两个标签命名为“TDD”生成,所以如果我尝试重命名标签,我必须这样做,所有的职位,而不是只是一个标签对象。
<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>
任何想法?如果Blend没有正确渲染它,我可以忽略它并解决它,但它确实!