summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.WinRT/FormsButton.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.WinRT/FormsButton.cs')
-rw-r--r--Xamarin.Forms.Platform.WinRT/FormsButton.cs65
1 files changed, 59 insertions, 6 deletions
diff --git a/Xamarin.Forms.Platform.WinRT/FormsButton.cs b/Xamarin.Forms.Platform.WinRT/FormsButton.cs
index 73c2f922..ffe75d4f 100644
--- a/Xamarin.Forms.Platform.WinRT/FormsButton.cs
+++ b/Xamarin.Forms.Platform.WinRT/FormsButton.cs
@@ -1,7 +1,9 @@
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
+using Windows.UI.Xaml.Media;
#if WINDOWS_UWP
+using WContentPresenter = Windows.UI.Xaml.Controls.ContentPresenter;
namespace Xamarin.Forms.Platform.UWP
#else
@@ -11,36 +13,87 @@ namespace Xamarin.Forms.Platform.WinRT
{
public class FormsButton : Windows.UI.Xaml.Controls.Button
{
- public static readonly DependencyProperty BorderRadiusProperty = DependencyProperty.Register("BorderRadius", typeof(int), typeof(FormsButton),
+ public static readonly DependencyProperty BorderRadiusProperty = DependencyProperty.Register(nameof(BorderRadius), typeof(int), typeof(FormsButton),
new PropertyMetadata(default(int), OnBorderRadiusChanged));
+ public static readonly DependencyProperty BackgroundColorProperty = DependencyProperty.Register(nameof(BackgroundColor), typeof(Brush), typeof(FormsButton),
+ new PropertyMetadata(default(Brush), OnBackgroundColorChanged));
+
+#if WINDOWS_UWP
+ WContentPresenter _contentPresenter;
+#else
Border _border;
+#endif
+
+ public Brush BackgroundColor
+ {
+ get
+ {
+ return (Brush)GetValue(BackgroundColorProperty);
+ }
+ set
+ {
+ SetValue(BackgroundColorProperty, value);
+ }
+ }
public int BorderRadius
{
- get { return (int)GetValue(BorderRadiusProperty); }
- set { SetValue(BorderRadiusProperty, value); }
+ get
+ {
+ return (int)GetValue(BorderRadiusProperty);
+ }
+ set
+ {
+ SetValue(BorderRadiusProperty, value);
+ }
}
protected override void OnApplyTemplate()
{
base.OnApplyTemplate();
+#if WINDOWS_UWP
+ _contentPresenter = GetTemplateChild("ContentPresenter") as WContentPresenter;
+#else
_border = GetTemplateChild("Border") as Border;
+#endif
+ UpdateBackgroundColor();
UpdateBorderRadius();
}
+ static void OnBackgroundColorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+ {
+ ((FormsButton)d).UpdateBackgroundColor();
+ }
+
static void OnBorderRadiusChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
((FormsButton)d).UpdateBorderRadius();
}
+ void UpdateBackgroundColor()
+ {
+ Background = Color.Transparent.ToBrush();
+#if WINDOWS_UWP
+ if (_contentPresenter != null)
+ _contentPresenter.Background = BackgroundColor;
+#else
+ if (_border != null)
+ _border.Background = BackgroundColor;
+#endif
+ }
+
void UpdateBorderRadius()
{
- if (_border == null)
- return;
- _border.CornerRadius = new CornerRadius(BorderRadius);
+#if WINDOWS_UWP
+ if (_contentPresenter != null)
+ _contentPresenter.CornerRadius = new CornerRadius(BorderRadius);
+#else
+ if (_border != null)
+ _border.CornerRadius = new CornerRadius(BorderRadius);
+#endif
}
}
} \ No newline at end of file