private void AddNewKeyHolder(RegistryKey registryKey) { RegistryKeyHolder3 newKeyHolder = new RegistryKeyHolder3(registryKey, 0); newKeyHolder.PropertyChanged += new PropertyChangedEventHandler(KeyHolder_PropertyChanged); this.allKeys.Add(newKeyHolder); }
public void ClearSubKeys(RegistryKeyHolder3 parentKeyHolder) { int indexToRemove = this.allKeys.IndexOf(parentKeyHolder) + 1; while ((indexToRemove < this.allKeys.Count) && (this.allKeys[indexToRemove].Level > parentKeyHolder.Level)) { this.allKeys.RemoveAt(indexToRemove); this.DataItemsCount--; } }
private void TreeItemDoubleClick(object sender, MouseButtonEventArgs e) { FrameworkElement fe = e.OriginalSource as FrameworkElement; if (fe != null) { RegistryKeyHolder3 keyHolder = fe.DataContext as RegistryKeyHolder3; if (keyHolder != null) { keyHolder.IsExpanded = !keyHolder.IsExpanded; e.Handled = true; } } }
void KeyHolder_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "IsExpanded") { RegistryKeyHolder3 keyHolder = (RegistryKeyHolder3)sender; if (keyHolder.IsExpanded) { this.PopulateSubKeys(keyHolder); } else { this.ClearSubKeys(keyHolder); } } }
public void PopulateSubKeys(RegistryKeyHolder3 parentKeyHolder) { int indexParentKey = this.allKeys.IndexOf(parentKeyHolder); if (indexParentKey == this.allKeys.Count - 1 || this.allKeys[indexParentKey + 1].Level <= parentKeyHolder.Level) { string[] subKeyNames = parentKeyHolder.Key.GetSubKeyNames(); for (int i = 0; i < subKeyNames.Length; i++) { RegistryKeyHolder3 childKeyHolder = new RegistryKeyHolder3(parentKeyHolder.Key.OpenSubKey(subKeyNames[i]), parentKeyHolder.Level + 1); childKeyHolder.PropertyChanged += new PropertyChangedEventHandler(KeyHolder_PropertyChanged); allKeys.Insert(indexParentKey + i + 1, childKeyHolder); this.DataItemsCount++; } } }