我有一個TreeView。我有一個爲TreeViewItems定義的contextMenu。新增項目被添加到集合中,但不包含在treeViewItems中
當我右鍵點擊任何TreeViewItem,我得到一個ContextMenu,它有一個選項,添加一個新的TreeViewItem下用戶右鍵單擊的項目。
這裏是我的代碼:
private void AddContextMenu_Click(object sender, RoutedEventArgs e)
{
TreeViewItem treeViewItem = null;
foreach (TreeViewItem tvItem in StaticHelpers.FindVisualChildren<TreeViewItem>(cityTreeView))
{
if (tvItem.Header == ServiceLocator.Instance.SelectedCity)
{
treeViewItem = tvItem;
break;
}
}
AddNewCity(ServiceLocator.Instance.SelectedCity);
treeViewItem.IsExpanded = true;
City newlyAddedCity = getNewlyAddedCity(ServiceLocator.Instance.Cities);
foreach (TreeViewItem tvItem in StaticHelpers.FindVisualChildren<TreeViewItem>(cityTreeView))
{
if (tvItem.Header == newlyAddedCity)
{
treeViewItem = tvItem;
break;
}
}
this.RenameContextMenu_Click(treeViewItem, e);
}
在上面的代碼
現在,如果我繼續過去的foreach循環斷點,我可以看到,它遍歷所有的父項和這些子項的父的IsExpanded是設置爲true。
但我也可以注意到,當它循環遍歷所有項目時,它不會在集合中獲得newAddedCity,並因此導致第二個循環tvItem.Header == newlyAddedCity永遠不會變爲true。
最後,當計算機完成任務後,我可以在TreeView中看到新增的城市。
更新:
這裏是我的AddNewCity方法:
public static void AddNewCity(City parentCity)
{
City lastAddedCity = ServiceLocator.Instance.Cities.Where(x => x.IsLastAdded == true).Select(x => x).FirstOrDefault();
lastAddedCity.IsLastAdded = false;
City newCity = new City()
{
Id = lastAddedCity.Id + 1,
IsLastAdded = true,
Name = "New City"
};
ServiceLocator.Instance.Cities.Where(x => x.Id == parentCity.Id).FirstOrDefault().Children.Add(newCity);
CityMethods.SaveNew(parentCity.Id, "");
}
因此,你的問題只是你不能打斷點或面臨一些問題添加對象到treeView? – 2014-10-04 09:33:20
是的,上面的代碼只是沒有達到斷點。不,我沒有面臨任何向treeView添加對象的問題。 – Vishal 2014-10-04 09:34:47