Вызов всех экспертов WPF!WPF: список списка с несколькими источниками
Я конвертирую приложение, которое я создал для создания символов для определенной RPG из Window Forms в WPF. По большей части программа намного проще в форме WPF; однако, я не могу представить эту часть для жизни меня.
У меня есть база данных, которая содержит список навыков, которые может принять персонаж. Эта база данных не содержит символов - обновление символов не изменит базу данных. Пользователь может добавлять новые навыки в базу данных, если они этого хотят, но это отдельно от создания персонажа. В окне создания персонажа у меня есть ListView, чтобы показать навыки, перечисленные в базе данных. Щелчок по строке в ListView обновляет текстовое поле описания и элемент управления Image - все это работает отлично.
Символ хранится в классе символов; который содержит список навыков, которые принял персонаж. Этот список не содержит всех навыков в базе данных, поэтому пользователь может обменять этот символ между приложениями с измененными базами данных без проблем.
Я хочу отобразить некоторые поля из класса символов и некоторые поля из базы данных в том же ListView. Например,
Имя (базы данных), уровень (символ), Score (символ), MaxTakenCount (база данных)
То, что я хочу добиться: список навыков персонажа будет иметь нулевые навыки до тех пор, пока пользователь не поднимает Значение «Уровень» для значения больше единицы. Изменение «Уровня» создаст экземпляр этого навыка и сохранит его в списке навыков персонажа. Оценка рассчитывается с использованием формулы, хранящейся в базе данных для этого навыка (та же таблица, что и Name, MaxTakenCount). Установка «Уровень» обратно в ноль удаляет навык из списка навыков персонажа. Если повезет, значения будут двухсторонними, поэтому я могу использовать undo/redo. (Undo queue хранит сериализованные копии объекта символа всякий раз, когда делается изменение.)
Насколько возможен этот WPF? Я не знаю, как жонглировать строку базы данных и список навыков персонажа, чтобы делать то, что я хочу. Вот что я до сих пор. Примечание: привязки «Оценка и уровень» не работают, поскольку я не знаю, как правильно ссылаться на список навыков. Список навыков - это контекст данных вкладки, содержащей ListView. Элемент ItemSource ListView установлен в «SkillTable» за кулисами.
<ListView Name="listSkills" Margin="10" Grid.Row="2" IsSynchronizedWithCurrentItem="True" Background="#AAFFFFFF" FontSize="14">
<ListView.View>
<GridView>
<GridViewColumn Header="Name">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name, Mode=TwoWay}" Margin="5" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Score">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Score, Mode=TwoWay}" Margin="5" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Level">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ListBox SelectedIndex="{Binding Level, Mode=TwoWay}">
<ListBox.Style>
<Style TargetType="ListBox">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" Margin="5,0" HorizontalAlignment="Left" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.Style>
<ListBoxItem Width="15"> </ListBoxItem>
<ListBoxItem Width="15">S</ListBoxItem>
<ListBoxItem Width="15">T</ListBoxItem>
<ListBoxItem Width="15">M</ListBoxItem>
</ListBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
ListView заполняется каждой строкой в базе данных. Столбцы базы данных правильно заполнены; однако, поля символов не являются. Пожалуйста, помогите этому новичку WPF !!