Browse Source

Handle the case of multiple content presenters within a content control handled via ContentControlMixin

wojciech krysiak 7 years ago
parent
commit
8e7d2e5a81
1 changed files with 7 additions and 0 deletions
  1. 7 0
      src/Avalonia.Controls/Mixins/ContentControlMixin.cs

+ 7 - 0
src/Avalonia.Controls/Mixins/ContentControlMixin.cs

@@ -3,6 +3,7 @@
 
 using System;
 using System.Linq;
+using System.Reactive.Disposables;
 using System.Runtime.CompilerServices;
 using Avalonia.Collections;
 using Avalonia.Controls.Presenters;
@@ -75,6 +76,12 @@ namespace Avalonia.Controls.Mixins
                             null,
                             presenter.GetValue(ContentPresenter.ChildProperty));
 
+                        if (subscriptions.Value.TryGetValue(sender, out IDisposable previousSubscription))
+                        {
+                            subscription = new CompositeDisposable(previousSubscription, subscription);
+                            subscriptions.Value.Remove(sender);
+                        }
+
                         subscriptions.Value.Add(sender, subscription);
                     }
                 }