@@ -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