Search code examples
c#xamlwindows-phone-8windows-phone-8.1

Set StaticResource style of a control dynamically in the code


Let's say, I've got something like this (in MainPage.xaml):

<Page.Resources>
    <Style TargetType="TextBlock" x:Key="TextBlockStyle">
        <Setter Property="FontFamily" Value="Segoe UI Light" />
        <Setter Property="Background" Value="Navy" />
    </Style>
</Page.Resources>

Then, I would like to apply that StaticResource style to my dynamic created TextBlock (file MainPage.xaml.cs).

Is there any possibility to do this instead of doing something like this:

myTextBlock.FontFamily = new FontFamily("Segoe UI Light");
myTextBlock.Background = new SolidColorBrush(Color.FromArgb(255,0,0,128));

Solution

  • It has been more than 4 years now since this question was asked, but I want to post an answer just to share my findings.

    For example if there is a Style BlueButton described in Application resource in App.xaml (Xamarin Cross-Platform App development), it can be used as follows

    <?xml version="1.0" encoding="utf-8" ?><Application xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="SharedUi.App">
    <Application.Resources>
        <ResourceDictionary>
            <Style x:Key="BlueButton" TargetType="Button">
                <Setter Property="TextColor" Value="White" />
                <Setter Property="FontSize" Value="20" />
                <Setter Property="BackgroundColor" Value="Blue"/>
                <Setter Property="HeightRequest" Value="70"/>
                <Setter Property="FontAttributes" Value="Bold"/>
            </Style>            
        </ResourceDictionary>
    </Application.Resources></Application>
    

    Then in the code behind

    Button newButton1 = new Button
    {
        Text = "Hello",
        WidthRequest = (double)15.0,
        Style = (Style)Application.Current.Resources["BlueButton"]
    };