summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.WP8/BrushHelpers.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.WP8/BrushHelpers.cs')
-rw-r--r--Xamarin.Forms.Platform.WP8/BrushHelpers.cs37
1 files changed, 37 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.WP8/BrushHelpers.cs b/Xamarin.Forms.Platform.WP8/BrushHelpers.cs
new file mode 100644
index 00000000..993b23f4
--- /dev/null
+++ b/Xamarin.Forms.Platform.WP8/BrushHelpers.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Windows.Media;
+
+namespace Xamarin.Forms.Platform.WinPhone
+{
+ internal static class BrushHelpers
+ {
+ /// <summary>
+ /// Handles the logic for setting a Xamarin.Forms Color for a Brush
+ /// while caching the original default brush
+ /// </summary>
+ /// <param name="color">The target Xamarin.Forms.Color</param>
+ /// <param name="defaultbrush">The renderer's cache for the default brush</param>
+ /// <param name="getter">Delegate for retrieving the Control's current Brush</param>
+ /// <param name="setter">Delegate for setting the Control's Brush</param>
+ public static void UpdateColor(Color color, ref Brush defaultbrush, Func<Brush> getter, Action<Brush> setter)
+ {
+ if (color.IsDefault)
+ {
+ if (defaultbrush == null)
+ {
+ return;
+ }
+
+ setter(defaultbrush);
+ return;
+ }
+
+ if (defaultbrush == null)
+ {
+ defaultbrush = getter();
+ }
+
+ setter(color.ToBrush());
+ }
+ }
+}