diff --git a/src/Avalonia.Controls/ControlExtensions.cs b/src/Avalonia.Controls/ControlExtensions.cs index 0b15835b19..60a940627f 100644 --- a/src/Avalonia.Controls/ControlExtensions.cs +++ b/src/Avalonia.Controls/ControlExtensions.cs @@ -20,6 +20,8 @@ namespace Avalonia.Controls /// The control. public static void BringIntoView(this IControl control) { + Contract.Requires(control != null); + control.BringIntoView(new Rect(control.Bounds.Size)); } @@ -30,6 +32,8 @@ namespace Avalonia.Controls /// The area of the control to being into view. public static void BringIntoView(this IControl control, Rect rect) { + Contract.Requires(control != null); + var ev = new RequestBringIntoViewEventArgs { RoutedEvent = Control.RequestBringIntoViewEvent, @@ -49,6 +53,9 @@ namespace Avalonia.Controls /// The control or null if not found. public static T FindControl(this IControl control, string name) where T : class, IControl { + Contract.Requires(control != null); + Contract.Requires(name != null); + var nameScope = control.FindNameScope(); if (nameScope == null) @@ -66,6 +73,8 @@ namespace Avalonia.Controls /// The control's name scope, or null if not found. public static INameScope FindNameScope(this IControl control) { + Contract.Requires(control != null); + return control.GetSelfAndLogicalAncestors() .OfType() .Select(x => (x as INameScope) ?? NameScope.GetNameScope(x)) @@ -80,6 +89,8 @@ namespace Avalonia.Controls /// True to add the pseudoclass or false to remove. public static void Set(this IPseudoClasses classes, string name, bool value) { + Contract.Requires(classes != null); + if (value) { classes.Add(name); @@ -99,6 +110,8 @@ namespace Avalonia.Controls /// A disposable used to cancel the subscription. public static IDisposable Set(this IPseudoClasses classes, string name, IObservable trigger) { + Contract.Requires(classes != null); + return trigger.Subscribe(x => classes.Set(name, x)); } } diff --git a/src/Avalonia.Controls/Presenters/ItemVirtualizerNone.cs b/src/Avalonia.Controls/Presenters/ItemVirtualizerNone.cs index 411f309368..8947b30e63 100644 --- a/src/Avalonia.Controls/Presenters/ItemVirtualizerNone.cs +++ b/src/Avalonia.Controls/Presenters/ItemVirtualizerNone.cs @@ -123,7 +123,7 @@ namespace Avalonia.Controls.Presenters if (index != -1) { var container = Owner.ItemContainerGenerator.ContainerFromIndex(index); - container.BringIntoView(); + container?.BringIntoView(); } } }