在代码后面设置一个控件的StaticResource样式

kod*_*911 11 c# xaml windows-phone-8 windows-phone-8.1

让我们说,我有这样的东西(在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>
Run Code Online (Sandbox Code Playgroud)

然后,我想将StaticResource样式应用于我动态创建的TextBlock(文件MainPage.xaml.cs).

有没有可能做到这一点,而不是做这样的事情:

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

Saj*_*ran 9

你可以设置,像这样的东西,

  TextBlock myTextBlock= new TextBlock ()
    {
        FontFamily = new FontFamily("Segoe UI Light");
        Style = Resources["TextBlockStyle"] as Style,
    };
Run Code Online (Sandbox Code Playgroud)


3no*_*ot3 9

自问这个问题以来已经有4年多了,但是我想发表一个答案只是为了分享我的发现。

例如,如果Style BlueButtonApp.xaml(Xamarin跨平台应用程序开发)的“ 应用程序”资源中有描述,则可以按以下方式使用它

<?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>
Run Code Online (Sandbox Code Playgroud)

然后在后面的代码中

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