我有一个自引用层次结构是Ria实体。我将这些实体放入ObservableCollection并将集合绑定到我的TreeView。一切都按预期工作,除了当我将实体添加到树的根级别时,UI不会更新。Silverlight TreeView - 将项目添加到根节点不会更新TreeView
我在这个网站上发现了完全相同的问题。但是,这些问题的解决方案并不能帮助我。我不知道这个问题是WPF还是Silverlight或者什么的区别。
相关问题:
WPF TreeView Question 1
WPF TreeView Question 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(团队)),这将更新用户界面,但不是数据库。我试图避免这种逻辑,以防止收集和实体集失去同步。
我开始了这一切仅通过直接绑定到实体集,但具有相同的行为的ObservableCollection:
treeView.ItemsSource = loadOperation.Entities.Where(t => t.ParentID == null);
任何帮助表示赞赏。我已经从多方面解决了这个问题,无法让这个工作顺利进行。
新实体正在以编程方式创建,而不是通过TreeView。用“添加”按钮思考一个TextBox。 – 2011-08-25 02:37:36