How to set corner radius for button in xamarin uwp by programatically?
up vote
0
down vote
favorite
I am having an grid holding in Button. I want to set corner radius for this button by programmatically in xamarin.uwp. If it possible means i want to set corner radius for Bottom left alone. Please suggest your ideas for this query.
xamarin xamarin.forms uwp xamarin.uwp
add a comment |
up vote
0
down vote
favorite
I am having an grid holding in Button. I want to set corner radius for this button by programmatically in xamarin.uwp. If it possible means i want to set corner radius for Bottom left alone. Please suggest your ideas for this query.
xamarin xamarin.forms uwp xamarin.uwp
Do you only want to set the bottom left corner radius?
– Nico Zhu - MSFT
Nov 12 at 9:22
Yes bottom left and buttom right @NicoZhu-MSFT
– Karthik Rj
Nov 12 at 10:08
hi @KarthikRj Does it work ?
– Nico Zhu - MSFT
Nov 14 at 9:29
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am having an grid holding in Button. I want to set corner radius for this button by programmatically in xamarin.uwp. If it possible means i want to set corner radius for Bottom left alone. Please suggest your ideas for this query.
xamarin xamarin.forms uwp xamarin.uwp
I am having an grid holding in Button. I want to set corner radius for this button by programmatically in xamarin.uwp. If it possible means i want to set corner radius for Bottom left alone. Please suggest your ideas for this query.
xamarin xamarin.forms uwp xamarin.uwp
xamarin xamarin.forms uwp xamarin.uwp
asked Nov 10 at 8:58
Karthik Rj
1
1
Do you only want to set the bottom left corner radius?
– Nico Zhu - MSFT
Nov 12 at 9:22
Yes bottom left and buttom right @NicoZhu-MSFT
– Karthik Rj
Nov 12 at 10:08
hi @KarthikRj Does it work ?
– Nico Zhu - MSFT
Nov 14 at 9:29
add a comment |
Do you only want to set the bottom left corner radius?
– Nico Zhu - MSFT
Nov 12 at 9:22
Yes bottom left and buttom right @NicoZhu-MSFT
– Karthik Rj
Nov 12 at 10:08
hi @KarthikRj Does it work ?
– Nico Zhu - MSFT
Nov 14 at 9:29
Do you only want to set the bottom left corner radius?
– Nico Zhu - MSFT
Nov 12 at 9:22
Do you only want to set the bottom left corner radius?
– Nico Zhu - MSFT
Nov 12 at 9:22
Yes bottom left and buttom right @NicoZhu-MSFT
– Karthik Rj
Nov 12 at 10:08
Yes bottom left and buttom right @NicoZhu-MSFT
– Karthik Rj
Nov 12 at 10:08
hi @KarthikRj Does it work ?
– Nico Zhu - MSFT
Nov 14 at 9:29
hi @KarthikRj Does it work ?
– Nico Zhu - MSFT
Nov 14 at 9:29
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
For your requirement, you could custom BottomLeft
BindableProperty
. then use it in your custom button render like the following.
Custom Forms buttom
public class MyButton : Button
public static readonly BindableProperty BottomLeftProperty = BindableProperty.Create(
propertyName: "BottomLeft",
returnType: typeof(int),
declaringType: typeof(MyButton),
defaultValue: default(int));
public int BottomLeft
get return (int)GetValue(BottomLeftProperty);
set SetValue(BottomLeftProperty, value);
CustomButtonRenderer.cs
public class CustomButtonRenderer : ButtonRenderer
Windows.UI.Xaml.Controls.ContentPresenter _contentPresenter;
MyButton _myElement;
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
base.OnElementChanged(e);
if (Control == null)
SetNativeControl(new FormsButton());
if (e.NewElement != null)
Control.Loaded += Control_Loaded;
_myElement = Element as MyButton;
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == MyButton.BottomLeftProperty.PropertyName)
UpdateBottomLeftBorderRadius(_myElement.BottomLeft);
private void Control_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
_contentPresenter = MyFindChildByName(Control, "ContentPresenter") as Windows.UI.Xaml.Controls.ContentPresenter;
if (_myElement.IsSet(MyButton.BottomLeftProperty) && _myElement.BottomLeft != (int)MyButton.BottomLeftProperty.DefaultValue)
UpdateBottomLeftBorderRadius(_myElement.BottomLeft);
private void UpdateBottomLeftBorderRadius(int bottomLeft)
if (_contentPresenter != null)
_contentPresenter.CornerRadius = new CornerRadius(0, 0, 0, bottomLeft);
public static DependencyObject MyFindChildByName(DependencyObject parant, string ControlName)
int count = VisualTreeHelper.GetChildrenCount(parant);
for (int i = 0; i < count; i++)
var MyChild = VisualTreeHelper.GetChild(parant, i);
if (MyChild is FrameworkElement && ((FrameworkElement)MyChild).Name == ControlName)
return MyChild;
var FindResult = MyFindChildByName(MyChild, ControlName);
if (FindResult != null)
return FindResult;
return null;
Usage
<local:MyButton x:Name="Hello" Text="hello"
WidthRequest="100"
HeightRequest="100"
Margin="0,100,0,0"
BottomLeft="15"
VerticalOptions="Center"
HorizontalOptions="Center"
Clicked="MyButton_Clicked"/>
For edit the bottom left property programatically.
HelloBtn.BottomLeft = 30;
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
For your requirement, you could custom BottomLeft
BindableProperty
. then use it in your custom button render like the following.
Custom Forms buttom
public class MyButton : Button
public static readonly BindableProperty BottomLeftProperty = BindableProperty.Create(
propertyName: "BottomLeft",
returnType: typeof(int),
declaringType: typeof(MyButton),
defaultValue: default(int));
public int BottomLeft
get return (int)GetValue(BottomLeftProperty);
set SetValue(BottomLeftProperty, value);
CustomButtonRenderer.cs
public class CustomButtonRenderer : ButtonRenderer
Windows.UI.Xaml.Controls.ContentPresenter _contentPresenter;
MyButton _myElement;
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
base.OnElementChanged(e);
if (Control == null)
SetNativeControl(new FormsButton());
if (e.NewElement != null)
Control.Loaded += Control_Loaded;
_myElement = Element as MyButton;
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == MyButton.BottomLeftProperty.PropertyName)
UpdateBottomLeftBorderRadius(_myElement.BottomLeft);
private void Control_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
_contentPresenter = MyFindChildByName(Control, "ContentPresenter") as Windows.UI.Xaml.Controls.ContentPresenter;
if (_myElement.IsSet(MyButton.BottomLeftProperty) && _myElement.BottomLeft != (int)MyButton.BottomLeftProperty.DefaultValue)
UpdateBottomLeftBorderRadius(_myElement.BottomLeft);
private void UpdateBottomLeftBorderRadius(int bottomLeft)
if (_contentPresenter != null)
_contentPresenter.CornerRadius = new CornerRadius(0, 0, 0, bottomLeft);
public static DependencyObject MyFindChildByName(DependencyObject parant, string ControlName)
int count = VisualTreeHelper.GetChildrenCount(parant);
for (int i = 0; i < count; i++)
var MyChild = VisualTreeHelper.GetChild(parant, i);
if (MyChild is FrameworkElement && ((FrameworkElement)MyChild).Name == ControlName)
return MyChild;
var FindResult = MyFindChildByName(MyChild, ControlName);
if (FindResult != null)
return FindResult;
return null;
Usage
<local:MyButton x:Name="Hello" Text="hello"
WidthRequest="100"
HeightRequest="100"
Margin="0,100,0,0"
BottomLeft="15"
VerticalOptions="Center"
HorizontalOptions="Center"
Clicked="MyButton_Clicked"/>
For edit the bottom left property programatically.
HelloBtn.BottomLeft = 30;
add a comment |
up vote
0
down vote
For your requirement, you could custom BottomLeft
BindableProperty
. then use it in your custom button render like the following.
Custom Forms buttom
public class MyButton : Button
public static readonly BindableProperty BottomLeftProperty = BindableProperty.Create(
propertyName: "BottomLeft",
returnType: typeof(int),
declaringType: typeof(MyButton),
defaultValue: default(int));
public int BottomLeft
get return (int)GetValue(BottomLeftProperty);
set SetValue(BottomLeftProperty, value);
CustomButtonRenderer.cs
public class CustomButtonRenderer : ButtonRenderer
Windows.UI.Xaml.Controls.ContentPresenter _contentPresenter;
MyButton _myElement;
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
base.OnElementChanged(e);
if (Control == null)
SetNativeControl(new FormsButton());
if (e.NewElement != null)
Control.Loaded += Control_Loaded;
_myElement = Element as MyButton;
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == MyButton.BottomLeftProperty.PropertyName)
UpdateBottomLeftBorderRadius(_myElement.BottomLeft);
private void Control_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
_contentPresenter = MyFindChildByName(Control, "ContentPresenter") as Windows.UI.Xaml.Controls.ContentPresenter;
if (_myElement.IsSet(MyButton.BottomLeftProperty) && _myElement.BottomLeft != (int)MyButton.BottomLeftProperty.DefaultValue)
UpdateBottomLeftBorderRadius(_myElement.BottomLeft);
private void UpdateBottomLeftBorderRadius(int bottomLeft)
if (_contentPresenter != null)
_contentPresenter.CornerRadius = new CornerRadius(0, 0, 0, bottomLeft);
public static DependencyObject MyFindChildByName(DependencyObject parant, string ControlName)
int count = VisualTreeHelper.GetChildrenCount(parant);
for (int i = 0; i < count; i++)
var MyChild = VisualTreeHelper.GetChild(parant, i);
if (MyChild is FrameworkElement && ((FrameworkElement)MyChild).Name == ControlName)
return MyChild;
var FindResult = MyFindChildByName(MyChild, ControlName);
if (FindResult != null)
return FindResult;
return null;
Usage
<local:MyButton x:Name="Hello" Text="hello"
WidthRequest="100"
HeightRequest="100"
Margin="0,100,0,0"
BottomLeft="15"
VerticalOptions="Center"
HorizontalOptions="Center"
Clicked="MyButton_Clicked"/>
For edit the bottom left property programatically.
HelloBtn.BottomLeft = 30;
add a comment |
up vote
0
down vote
up vote
0
down vote
For your requirement, you could custom BottomLeft
BindableProperty
. then use it in your custom button render like the following.
Custom Forms buttom
public class MyButton : Button
public static readonly BindableProperty BottomLeftProperty = BindableProperty.Create(
propertyName: "BottomLeft",
returnType: typeof(int),
declaringType: typeof(MyButton),
defaultValue: default(int));
public int BottomLeft
get return (int)GetValue(BottomLeftProperty);
set SetValue(BottomLeftProperty, value);
CustomButtonRenderer.cs
public class CustomButtonRenderer : ButtonRenderer
Windows.UI.Xaml.Controls.ContentPresenter _contentPresenter;
MyButton _myElement;
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
base.OnElementChanged(e);
if (Control == null)
SetNativeControl(new FormsButton());
if (e.NewElement != null)
Control.Loaded += Control_Loaded;
_myElement = Element as MyButton;
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == MyButton.BottomLeftProperty.PropertyName)
UpdateBottomLeftBorderRadius(_myElement.BottomLeft);
private void Control_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
_contentPresenter = MyFindChildByName(Control, "ContentPresenter") as Windows.UI.Xaml.Controls.ContentPresenter;
if (_myElement.IsSet(MyButton.BottomLeftProperty) && _myElement.BottomLeft != (int)MyButton.BottomLeftProperty.DefaultValue)
UpdateBottomLeftBorderRadius(_myElement.BottomLeft);
private void UpdateBottomLeftBorderRadius(int bottomLeft)
if (_contentPresenter != null)
_contentPresenter.CornerRadius = new CornerRadius(0, 0, 0, bottomLeft);
public static DependencyObject MyFindChildByName(DependencyObject parant, string ControlName)
int count = VisualTreeHelper.GetChildrenCount(parant);
for (int i = 0; i < count; i++)
var MyChild = VisualTreeHelper.GetChild(parant, i);
if (MyChild is FrameworkElement && ((FrameworkElement)MyChild).Name == ControlName)
return MyChild;
var FindResult = MyFindChildByName(MyChild, ControlName);
if (FindResult != null)
return FindResult;
return null;
Usage
<local:MyButton x:Name="Hello" Text="hello"
WidthRequest="100"
HeightRequest="100"
Margin="0,100,0,0"
BottomLeft="15"
VerticalOptions="Center"
HorizontalOptions="Center"
Clicked="MyButton_Clicked"/>
For edit the bottom left property programatically.
HelloBtn.BottomLeft = 30;
For your requirement, you could custom BottomLeft
BindableProperty
. then use it in your custom button render like the following.
Custom Forms buttom
public class MyButton : Button
public static readonly BindableProperty BottomLeftProperty = BindableProperty.Create(
propertyName: "BottomLeft",
returnType: typeof(int),
declaringType: typeof(MyButton),
defaultValue: default(int));
public int BottomLeft
get return (int)GetValue(BottomLeftProperty);
set SetValue(BottomLeftProperty, value);
CustomButtonRenderer.cs
public class CustomButtonRenderer : ButtonRenderer
Windows.UI.Xaml.Controls.ContentPresenter _contentPresenter;
MyButton _myElement;
protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
base.OnElementChanged(e);
if (Control == null)
SetNativeControl(new FormsButton());
if (e.NewElement != null)
Control.Loaded += Control_Loaded;
_myElement = Element as MyButton;
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
base.OnElementPropertyChanged(sender, e);
if (e.PropertyName == MyButton.BottomLeftProperty.PropertyName)
UpdateBottomLeftBorderRadius(_myElement.BottomLeft);
private void Control_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
_contentPresenter = MyFindChildByName(Control, "ContentPresenter") as Windows.UI.Xaml.Controls.ContentPresenter;
if (_myElement.IsSet(MyButton.BottomLeftProperty) && _myElement.BottomLeft != (int)MyButton.BottomLeftProperty.DefaultValue)
UpdateBottomLeftBorderRadius(_myElement.BottomLeft);
private void UpdateBottomLeftBorderRadius(int bottomLeft)
if (_contentPresenter != null)
_contentPresenter.CornerRadius = new CornerRadius(0, 0, 0, bottomLeft);
public static DependencyObject MyFindChildByName(DependencyObject parant, string ControlName)
int count = VisualTreeHelper.GetChildrenCount(parant);
for (int i = 0; i < count; i++)
var MyChild = VisualTreeHelper.GetChild(parant, i);
if (MyChild is FrameworkElement && ((FrameworkElement)MyChild).Name == ControlName)
return MyChild;
var FindResult = MyFindChildByName(MyChild, ControlName);
if (FindResult != null)
return FindResult;
return null;
Usage
<local:MyButton x:Name="Hello" Text="hello"
WidthRequest="100"
HeightRequest="100"
Margin="0,100,0,0"
BottomLeft="15"
VerticalOptions="Center"
HorizontalOptions="Center"
Clicked="MyButton_Clicked"/>
For edit the bottom left property programatically.
HelloBtn.BottomLeft = 30;
edited Nov 12 at 10:53
answered Nov 12 at 10:44
Nico Zhu - MSFT
8,6521421
8,6521421
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53237436%2fhow-to-set-corner-radius-for-button-in-xamarin-uwp-by-programatically%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Do you only want to set the bottom left corner radius?
– Nico Zhu - MSFT
Nov 12 at 9:22
Yes bottom left and buttom right @NicoZhu-MSFT
– Karthik Rj
Nov 12 at 10:08
hi @KarthikRj Does it work ?
– Nico Zhu - MSFT
Nov 14 at 9:29