|
|
@@ -49,11 +49,9 @@ namespace Avalonia.Controls.Mixins
|
|
|
Contract.Requires<ArgumentNullException>(content != null);
|
|
|
Contract.Requires<ArgumentNullException>(logicalChildrenSelector != null);
|
|
|
|
|
|
- EventHandler<RoutedEventArgs> templateApplied = (s, ev) =>
|
|
|
+ void TemplateApplied(object s, RoutedEventArgs ev)
|
|
|
{
|
|
|
- var sender = s as TControl;
|
|
|
-
|
|
|
- if (sender != null)
|
|
|
+ if (s is TControl sender)
|
|
|
{
|
|
|
var e = (TemplateAppliedEventArgs)ev;
|
|
|
var presenter = (IControl)e.NameScope.Find(presenterName);
|
|
|
@@ -64,12 +62,12 @@ namespace Avalonia.Controls.Mixins
|
|
|
|
|
|
var logicalChildren = logicalChildrenSelector(sender);
|
|
|
var subscription = presenter
|
|
|
- .GetObservableWithHistory(ContentPresenter.ChildProperty)
|
|
|
- .Subscribe(child => UpdateLogicalChild(
|
|
|
+ .GetPropertyChangedObservable(ContentPresenter.ChildProperty)
|
|
|
+ .Subscribe(c => UpdateLogicalChild(
|
|
|
sender,
|
|
|
- logicalChildren,
|
|
|
- child.Item1,
|
|
|
- child.Item2));
|
|
|
+ logicalChildren,
|
|
|
+ c.OldValue,
|
|
|
+ c.NewValue));
|
|
|
|
|
|
UpdateLogicalChild(
|
|
|
sender,
|
|
|
@@ -80,18 +78,16 @@ namespace Avalonia.Controls.Mixins
|
|
|
subscriptions.Value.Add(sender, subscription);
|
|
|
}
|
|
|
}
|
|
|
- };
|
|
|
+ }
|
|
|
|
|
|
TemplatedControl.TemplateAppliedEvent.AddClassHandler(
|
|
|
typeof(TControl),
|
|
|
- templateApplied,
|
|
|
+ TemplateApplied,
|
|
|
RoutingStrategies.Direct);
|
|
|
|
|
|
content.Changed.Subscribe(e =>
|
|
|
{
|
|
|
- var sender = e.Sender as TControl;
|
|
|
-
|
|
|
- if (sender != null)
|
|
|
+ if (e.Sender is TControl sender)
|
|
|
{
|
|
|
var logicalChildren = logicalChildrenSelector(sender);
|
|
|
UpdateLogicalChild(sender, logicalChildren, e.OldValue, e.NewValue);
|
|
|
@@ -100,9 +96,7 @@ namespace Avalonia.Controls.Mixins
|
|
|
|
|
|
Control.TemplatedParentProperty.Changed.Subscribe(e =>
|
|
|
{
|
|
|
- var sender = e.Sender as TControl;
|
|
|
-
|
|
|
- if (sender != null)
|
|
|
+ if (e.Sender is TControl sender)
|
|
|
{
|
|
|
var logicalChild = logicalChildrenSelector(sender).FirstOrDefault() as IControl;
|
|
|
logicalChild?.SetValue(Control.TemplatedParentProperty, sender.TemplatedParent);
|
|
|
@@ -111,13 +105,9 @@ namespace Avalonia.Controls.Mixins
|
|
|
|
|
|
TemplatedControl.TemplateProperty.Changed.Subscribe(e =>
|
|
|
{
|
|
|
- var sender = e.Sender as TControl;
|
|
|
-
|
|
|
- if (sender != null)
|
|
|
+ if (e.Sender is TControl sender)
|
|
|
{
|
|
|
- IDisposable subscription;
|
|
|
-
|
|
|
- if (subscriptions.Value.TryGetValue(sender, out subscription))
|
|
|
+ if (subscriptions.Value.TryGetValue(sender, out IDisposable subscription))
|
|
|
{
|
|
|
subscription.Dispose();
|
|
|
subscriptions.Value.Remove(sender);
|
|
|
@@ -134,9 +124,7 @@ namespace Avalonia.Controls.Mixins
|
|
|
{
|
|
|
if (oldValue != newValue)
|
|
|
{
|
|
|
- var child = oldValue as IControl;
|
|
|
-
|
|
|
- if (child != null)
|
|
|
+ if (oldValue is IControl child)
|
|
|
{
|
|
|
logicalChildren.Remove(child);
|
|
|
}
|