Reputation: 722
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));
Upvotes: 22
Views: 23451
Reputation: 1
private void initializedynamicButton()
{
pnlContent.Children.Clear();
for (int i = 0; i < 25; i++)
{
Button btn = new Button();
btn.Style = (Style)this.FindResource("GelButton");
btn.Content = new
{
Text = "ButtonName_"+i.ToString(),
ImagePath = "",
Margin = new Thickness(0, 0, 0, 10)
};
btn.Tag = new { GroupID = i };
btn.Click += new RoutedEventHandler(btn_Click);
pnlContent.Children.Add(btn);
}
}
Upvotes: 0
Reputation: 536
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"]
};
Upvotes: 28
Reputation: 33381
You can use this:
Style textBlockStyle;
try
{
textBlockStyle = FindResource("TextBlockStyle") as Style;
}
catch(Exception ex)
{
// exception handling
}
if(textBlockStyle != null)
{
myTextBlock.Style = textBlockStyle;
}
or TryFindResource
approach:
myTextBlock.Style = (Style)TryFindResource("TextBlockStyle");
Upvotes: 3
Reputation: 222572
You can set, Something like this,
TextBlock myTextBlock= new TextBlock ()
{
FontFamily = new FontFamily("Segoe UI Light");
Style = Resources["TextBlockStyle"] as Style,
};
Upvotes: 13