Xamarin.Forms - 像CSS这样的嵌套样式继承吗?

时间:2016-05-18 14:39:03

标签: css xamarin xamarin.forms styling

假设您有以下HTML:

<div class="outer">
    Some text
    <p>Some more text</p>
    <div class="inner">
        Yet more text <span>and even more text</span>
    </div>
</div>

如果我应用以下CSS:

.outer {
    color: blue;
}

然后该html中的所有文本都将是蓝色的 - .outer div中的所有div都将继承该属性,无论它们嵌套多远。

我可以在Xamarin.Forms中做类似的事情吗?或者,如果我在StackLayout中有一堆标签,例如,我是否必须设置每个样式。单。标签...?

2 个答案:

答案 0 :(得分:1)

我选择做的是创建一个静态样式类,然后在XAML本身内部应用样式,或者在构造函数中应用该样式(如果适用)。这样您就可以控制单独设置项目样式或具有标准样式对于可重复使用的控制。

<强>的styleClass

    public static class AppStyling
        {

         public static readonly Style Style_Page_Standard = new Style(typeof(Page))
            {
                Setters =
                {
                    new Setter {Property =  Xamarin.Forms.Page.BackgroundColorProperty, Value = AppStyling.Color_GlobalBackground},
                    new Setter {Property = Xamarin.Forms.Page.PaddingProperty, Value = AppStyling.Padding_StandardPage},

                }
            };

        public static readonly Style Style_Button_Standard = new Style(typeof(Button))
        {
            Setters =
            {
                new Setter {Property = Xamarin.Forms.Button.BackgroundColorProperty, Value = AppStyling.Color_ButtonBackground},
                new Setter {Property = Xamarin.Forms.Button.TextColorProperty, Value = AppStyling.Color_ButtonText},
                new Setter {Property = Xamarin.Forms.Button.FontSizeProperty, Value = AppStyling.Font_Button},
                new Setter {Property = Xamarin.Forms.Button.BorderColorProperty, Value = AppStyling.Color_ButtonBorder},
                new Setter {Property = Xamarin.Forms.Button.BorderRadiusProperty, Value = AppStyling.Radius_StandardButtonCorner},
                new Setter {Property = Xamarin.Forms.Button.BorderWidthProperty, Value = 3},

            }
        };
}

实施控制

public Custom_Button()
        {
            this.Style = AppStyling.Style_Button_Standard;
        }

在XAML中实施

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyNameSpace.Views.MyContentPage"
             xmlns:styling="clr-namespace:MyNameSpace.Styling;assembly=MyNameSpace"
             Title="MyContentPageTitle"
             Style="{x:Static styling:AppStyling.Style_Page_Standard}">

还有Xamarin文档中要查看的全局资源声明。

https://developer.xamarin.com/guides/xamarin-forms/user-interface/styles/application/

答案 1 :(得分:1)

现在,您可以将CSS与Xamarin.Forms一起使用来设置XAML的样式。它是David Rettenbacher的一个名为 XamlCSS 的库。

它还支持WPF和UWP项目。

截至目前,对于Xamarin.Forms,建议使用预发布版本2.0.0-pre1 。您可以从here下载。可以在此wiki article中找到XamlCSS的文档。或者只需使用程序包管理器控制台中的Install-Package XamlCSS.XamarinForms -Version 2.0.0进行安装。

获得理解的最佳方法是试用sample project

有关详细信息,请参阅this Forum thread