diff --git a/samples/ControlCatalog/Pages/DataGridPage.xaml b/samples/ControlCatalog/Pages/DataGridPage.xaml
index cacc2204bd..6817d0698e 100644
--- a/samples/ControlCatalog/Pages/DataGridPage.xaml
+++ b/samples/ControlCatalog/Pages/DataGridPage.xaml
@@ -38,8 +38,8 @@
-
-
+
+
diff --git a/samples/ControlCatalog/Pages/SliderPage.xaml b/samples/ControlCatalog/Pages/SliderPage.xaml
index b3f32ed421..eeb198976b 100644
--- a/samples/ControlCatalog/Pages/SliderPage.xaml
+++ b/samples/ControlCatalog/Pages/SliderPage.xaml
@@ -22,6 +22,20 @@
IsSnapToTickEnabled="True"
Ticks="0,20,25,40,75,100"
Width="300" />
+
+
+
+
+
ToolTip
A control which pops up a hint when a control is hovered
-
@@ -38,6 +38,31 @@
ToolTip bottom placement
+
+
+
+
+ Moving offset
+
diff --git a/src/Avalonia.Base/Data/Core/SettableNode.cs b/src/Avalonia.Base/Data/Core/SettableNode.cs
index d0a918dc88..363d3da0ef 100644
--- a/src/Avalonia.Base/Data/Core/SettableNode.cs
+++ b/src/Avalonia.Base/Data/Core/SettableNode.cs
@@ -15,7 +15,8 @@ namespace Avalonia.Data.Core
private bool ShouldNotSet(object value)
{
- if (PropertyType == null)
+ var propertyType = PropertyType;
+ if (propertyType == null)
{
return false;
}
@@ -37,7 +38,7 @@ namespace Avalonia.Data.Core
return false;
}
- if (PropertyType.IsValueType)
+ if (propertyType.IsValueType)
{
return lastValue.Equals(value);
}
diff --git a/src/Avalonia.Controls.DataGrid/DataGrid.cs b/src/Avalonia.Controls.DataGrid/DataGrid.cs
index 6687c59aa4..8f9b9583cf 100644
--- a/src/Avalonia.Controls.DataGrid/DataGrid.cs
+++ b/src/Avalonia.Controls.DataGrid/DataGrid.cs
@@ -2285,6 +2285,17 @@ namespace Avalonia.Controls
}
}
+ ///
+ /// Comparator class so we can sort list by the display index
+ ///
+ public class DisplayIndexComparer : IComparer
+ {
+ int IComparer.Compare(DataGridColumn x, DataGridColumn y)
+ {
+ return (x.DisplayIndexWithFiller < y.DisplayIndexWithFiller) ? -1 : 1;
+ }
+ }
+
///
/// Builds the visual tree for the column header when a new template is applied.
///
@@ -2309,8 +2320,11 @@ namespace Avalonia.Controls
ColumnsInternal.FillerColumn.IsRepresented = false;
}
_columnHeadersPresenter.OwningGrid = this;
- // Columns were added before before our Template was applied, add the ColumnHeaders now
- foreach (DataGridColumn column in ColumnsItemsInternal)
+
+ // Columns were added before our Template was applied, add the ColumnHeaders now
+ List sortedInternal = new List(ColumnsItemsInternal);
+ sortedInternal.Sort(new DisplayIndexComparer());
+ foreach (DataGridColumn column in sortedInternal)
{
InsertDisplayedColumnHeader(column);
}
diff --git a/src/Avalonia.Controls/ToolTip.cs b/src/Avalonia.Controls/ToolTip.cs
index 71bd0726d4..ab507d07a2 100644
--- a/src/Avalonia.Controls/ToolTip.cs
+++ b/src/Avalonia.Controls/ToolTip.cs
@@ -1,3 +1,4 @@
+#nullable enable
using System;
using System.Reactive.Linq;
using Avalonia.Controls.Metadata;
@@ -21,8 +22,8 @@ namespace Avalonia.Controls
///
/// Defines the ToolTip.Tip attached property.
///
- public static readonly AttachedProperty