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();
}
}
}