Skip to content
This repository was archived by the owner on Sep 25, 2024. It is now read-only.

Commit b681699

Browse files
authored
Merge pull request #494 from xamarin/ermau-fix-noeditors
[Win] Don't bind with no name category
2 parents 1ef4751 + af0feca commit b681699

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

Xamarin.PropertyEditing.Windows/PropertyEditorPanel.cs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public bool IsArrangeEnabled
7070
}
7171

7272
public static readonly DependencyProperty ArrangeModeProperty = DependencyProperty.Register (
73-
nameof(ArrangeMode), typeof(PropertyArrangeMode), typeof(PropertyEditorPanel), new PropertyMetadata (PropertyArrangeMode.Name, (o, args) => ((PropertyEditorPanel)o).OnArrangeModeChanged ((PropertyArrangeMode)args.NewValue)));
73+
nameof(ArrangeMode), typeof(PropertyArrangeMode), typeof(PropertyEditorPanel), new PropertyMetadata (PropertyArrangeMode.Name, (o, args) => ((PropertyEditorPanel)o).UpdateBinding ((PropertyArrangeMode)args.NewValue)));
7474

7575
public PropertyArrangeMode ArrangeMode
7676
{
@@ -103,7 +103,7 @@ public override void OnApplyTemplate ()
103103
OnTargetPlatformChanged();
104104

105105
if (this.vm.SelectedObjects.Count > 0 || ArrangeMode != PropertyArrangeMode.Name)
106-
OnArrangeModeChanged (ArrangeMode);
106+
UpdateBinding (ArrangeMode);
107107
}
108108

109109
private FrameworkElement root;
@@ -154,7 +154,7 @@ private void OnSelectedItemsChanged (object sender, NotifyCollectionChangedEvent
154154
}
155155

156156
if (ArrangeMode == PropertyArrangeMode.Name)
157-
OnArrangeModeChanged (ArrangeMode);
157+
UpdateBinding (ArrangeMode);
158158

159159
UpdateIcon ();
160160
}
@@ -203,21 +203,25 @@ private void OnVmPropertyChanged (object sender, PropertyChangedEventArgs e)
203203
SetCurrentValue (ArrangeModeProperty, this.vm.ArrangeMode);
204204
}
205205

206-
private void OnArrangeModeChanged (PropertyArrangeMode newMode)
206+
private void UpdateBinding (PropertyArrangeMode arrangeMode)
207207
{
208208
if (this.items == null)
209209
return;
210210

211-
Binding itemsSource;
212-
if (newMode == PropertyArrangeMode.Name)
213-
itemsSource = new Binding ("ArrangedEditors[0].Editors");
214-
else
211+
Binding itemsSource = null;
212+
if (arrangeMode == PropertyArrangeMode.Name) {
213+
if (SelectedItems.Count > 0)
214+
itemsSource = new Binding ("ArrangedEditors[0].Editors") { FallbackValue = null };
215+
} else
215216
itemsSource = new Binding ("ArrangedEditors");
216217

217-
this.items.SetBinding (ItemsControl.ItemsSourceProperty, itemsSource);
218+
if (itemsSource != null)
219+
this.items.SetBinding (ItemsControl.ItemsSourceProperty, itemsSource);
220+
else
221+
this.items.ItemsSource = null;
218222

219223
if (this.vm != null)
220-
this.vm.ArrangeMode = newMode;
224+
this.vm.ArrangeMode = arrangeMode;
221225
}
222226
}
223227

0 commit comments

Comments
 (0)