我有一個自引用層次結構是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