У меня есть самореферентная иерархия, которая является сущностью Риа. Я помещаю сущности в ObservableCollection и связываю коллекцию с моим TreeView. Все работает как положено, за исключением того, что когда я добавляю сущность на корневой уровень дерева, пользовательский интерфейс не обновляется.
Я нашел точно такой же вопрос на этом сайте. Однако решения в этих вопросах мне не помогают. Я не знаю, если проблема в разнице между WPF или Silverlight или чем.
Похожие вопросы:
WPF TreeView Вопрос 1
WPF TreeView Вопрос 2
Мой XAML:
<sdk:TreeView.ItemTemplate>
<sdk:HierarchicalDataTemplate ItemsSource="{Binding ChildTeams}">
<TextBlock Text="{Binding Name, Mode=OneWay}"/>
</sdk:HierarchicalDataTemplate>
</sdk:TreeView.ItemTemplate>
Загрузка объектов:
var query = context.GetTeamsQuery();
var loadOperation = context.Load(query);
loadOperation.Completed += (sender, e) =>
{
Entities.Clear();
foreach(var item in loadOperation.Entities.Where(t => t.ParentID == null))
{
Entities.Add(item);
}
treeView.ItemsSource = Entities;
};
Добавление сущности в контекст после того, как новая сущность создается программно:
context.Teams.Add(team);
context.SubmitChanges();
Суть моего вопроса в том, почему добавление сущностей на узлы более низкого уровня работает идеально, а добавление в корень - нет?
Я могу вручную добавить команду в коллекцию (Entities.Add (team)), и это обновит пользовательский интерфейс, но не базу данных. Я пытаюсь избежать такой логики, чтобы предотвратить несинхронизацию набора и набора сущностей.
Я начал все это, просто привязавшись прямо к набору сущностей, но у него то же поведение, что и у ObservableCollection:
treeView.ItemsSource = loadOperation.Entities.Where(t => t.ParentID == null);
Любая помощь приветствуется. Я занимался этим со многих сторон и не могу заставить это работать так гладко, как следовало бы.