Question

Another WPF question...

<UserControl x:Class="TKEApp.Components.UserControls.ButtonControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid Background="Black">
        <TextBlock Foreground="White" Background="Brown" Name="lblCaption" TextAlignment="Center"></TextBlock>
    </Grid>
</UserControl>

Somwhere in the application code I have an instance of this control and I need to make it's corners rounded programmatically. Is this possible?

Was it helpful?

Solution

You need to use a Border to provide rounded corners, so you could do something like this:

<UserControl x:Class="TKEApp.Components.UserControls.ButtonControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Border x:Name="border" Background="Black">
        <TextBlock Foreground="White" Background="Brown" Name="lblCaption" TextAlignment="Center"></TextBlock>
    </Border>
</UserControl>

And then add a property to your UserControl:

public int BorderRadius
{
    get { return border.CornerRadius; }
    set { border.CornerRadius = value; }
}

Which allows you to set the border's CornerRadius from code.

OTHER TIPS

<UserControl x:Class="TKEApp.Components.UserControls.ButtonControl" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="Transparent"> 
<Border x:Name="border"  Background="Black" BorderThickness="5" BorderBrush="Yellow"  > 
    <TextBlock Foreground="White" Background="Brown" Name="lblCaption" TextAlignment="Center"></TextBlock> 
</Border> 

First find out the user control using the FindName Method and

    Border brd=usercontrol.FindName("border") as Border;brd.CornerRadius=new CornerRadius(5);

you can also use RadiusX and RadiusY of Rectangle to create Rounded corners.

check this, Hope this helps!!

<Button x:Name="bbb"> b </Button>

var r=bbb.Template.FindName("border",bbb);
((Border)r).CornerRadius = new CornerRadius(40);

Call outside the constructor, maybe on Loaded event.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top