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.










share|improve this question





















  • 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














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.










share|improve this question





















  • 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












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.










share|improve this question













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






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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
















  • 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












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"/>


enter image description here



For edit the bottom left property programatically.



HelloBtn.BottomLeft = 30;





share|improve this answer






















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    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

























    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"/>


    enter image description here



    For edit the bottom left property programatically.



    HelloBtn.BottomLeft = 30;





    share|improve this answer


























      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"/>


      enter image description here



      For edit the bottom left property programatically.



      HelloBtn.BottomLeft = 30;





      share|improve this answer
























        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"/>


        enter image description here



        For edit the bottom left property programatically.



        HelloBtn.BottomLeft = 30;





        share|improve this answer














        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"/>


        enter image description here



        For edit the bottom left property programatically.



        HelloBtn.BottomLeft = 30;






        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Nov 12 at 10:53

























        answered Nov 12 at 10:44









        Nico Zhu - MSFT

        8,6521421




        8,6521421



























            draft saved

            draft discarded
















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Use pre created SQLite database for Android project in kotlin

            Darth Vader #20

            Ondo