diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs index 7712ff9162..d92a362f7a 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.AddIn/Src/WpfViewContent.cs @@ -191,6 +191,7 @@ namespace ICSharpCode.WpfDesign.AddIn void OnPropertyGridPropertyChanged(object sender, PropertyChangedEventArgs e) { + if (propertyGridView.PropertyGrid.ReloadActive) return; if (e.PropertyName == "Name") { if (!propertyGridView.PropertyGrid.IsNameCorrect) return; @@ -205,7 +206,7 @@ namespace ICSharpCode.WpfDesign.AddIn // rename the member IMember member = info.CompilationUnit.Classes [0].AllMembers.FirstOrDefault(m => m.Name == propertyGridView.PropertyGrid.OldName); - if (member != null) { + if (member != null && propertyGridView.PropertyGrid.Name != null) { FindReferencesAndRenameHelper.RenameMember(member, propertyGridView.PropertyGrid.Name); } } diff --git a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGrid.cs b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGrid.cs index ad077f6373..906ae6ab14 100644 --- a/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGrid.cs +++ b/src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Project/PropertyGrid/PropertyGrid.cs @@ -158,14 +158,17 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid } } - IEnumerable selectedItems; + IList selectedItems; public IEnumerable SelectedItems { get { return selectedItems; } set { - selectedItems = value; + if (value != null) + selectedItems = value.ToList(); + else + selectedItems = null; RaisePropertyChanged("SelectedItems"); Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new Action( delegate { @@ -179,16 +182,26 @@ namespace ICSharpCode.WpfDesign.Designer.PropertyGrid Filter = null; } + volatile bool reloadActive; + public bool ReloadActive { + get { return reloadActive; } + } + void Reload() { - Clear(); - - if (SelectedItems == null || SelectedItems.Count() == 0) return; - if (SelectedItems.Count() == 1) SingleItem = SelectedItems.First(); - - foreach (var md in GetDescriptors()) { - if (PassesFilter(md.Name)) - AddNode(md); + reloadActive = true; + try { + Clear(); + + if (selectedItems == null || selectedItems.Count == 0) return; + if (selectedItems.Count == 1) SingleItem = selectedItems[0]; + + foreach (var md in GetDescriptors()) { + if (PassesFilter(md.Name)) + AddNode(md); + } + } finally { + reloadActive = false; } }