|
|
|
@ -1,6 +1,7 @@ |
|
|
|
// Copyright (c) The Avalonia Project. All rights reserved.
|
|
|
|
// Licensed under the MIT license. See licence.md file in the project root for full license information.
|
|
|
|
|
|
|
|
using System; |
|
|
|
using System.Collections; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Collections.Specialized; |
|
|
|
@ -54,6 +55,7 @@ namespace Avalonia.Controls |
|
|
|
|
|
|
|
private IEnumerable _items = new AvaloniaList<object>(); |
|
|
|
private IItemContainerGenerator _itemContainerGenerator; |
|
|
|
private IDisposable _itemsCollectionChangedSubscription; |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// Initializes static members of the <see cref="ItemsControl"/> class.
|
|
|
|
@ -326,12 +328,8 @@ namespace Avalonia.Controls |
|
|
|
/// <param name="e">The event args.</param>
|
|
|
|
protected virtual void ItemsChanged(AvaloniaPropertyChangedEventArgs e) |
|
|
|
{ |
|
|
|
var incc = e.OldValue as INotifyCollectionChanged; |
|
|
|
|
|
|
|
if (incc != null) |
|
|
|
{ |
|
|
|
incc.CollectionChanged -= ItemsCollectionChanged; |
|
|
|
} |
|
|
|
_itemsCollectionChangedSubscription?.Dispose(); |
|
|
|
_itemsCollectionChangedSubscription = null; |
|
|
|
|
|
|
|
var oldValue = e.OldValue as IEnumerable; |
|
|
|
var newValue = e.NewValue as IEnumerable; |
|
|
|
@ -428,7 +426,7 @@ namespace Avalonia.Controls |
|
|
|
|
|
|
|
if (incc != null) |
|
|
|
{ |
|
|
|
incc.CollectionChanged += ItemsCollectionChanged; |
|
|
|
_itemsCollectionChangedSubscription = incc.WeakSubscribe(ItemsCollectionChanged); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|