Я хочу добавить один объект модели, который был создан один раз в XAML, и добавить его в две разные коллекции (в xaml).
Следующий код хорошо отображается во время разработки Blend, но я получаю следующие ошибки во время выполнения:
Для "Post1"
Объект типа 'WpfBlog.Models.Tag' не может быть преобразован в тип 'System.Collections.ObjectModel.ObservableCollection`1 [WpfBlog.Models.Tag]'. Ошибка в объекте 'WpfBlog.Admin' в файле разметки 'WpfBlog; component / Admin.xaml' Строка XX Позиция YY.
Если я закомментирую «Post1», я получу эту ошибку на «Post2»
Невозможно добавить элемент в свойство «Теги», поскольку свойство может иметь только один дочерний элемент, если оно использует явный тег коллекции. Ошибка объекта 'System.Windows.StaticResourceExtension' в файле разметки 'WpfBlog; component / Admin.xaml' Строка AA Позиция 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>
Следующий код компилируется и работает нормально, но создаются два тега с именем «TDD», поэтому, если я пытаюсь переименовать тег, я должен сделать это для всех сообщений, а не только для одного объекта Tag.
<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 не отображал это правильно, но это делает!