如何为Xamarin表单应用程序创建全局样式

时间:2016-05-12 10:56:42

标签: xaml styles xamarin.forms

我正在使用Xamarin Studio在Mac机器上使用PCL创建我的第一个xamarin表单应用程序。 我阅读了很多文章来创建应用程序的全局样式,但是我无法访问在App.xaml.cs文件中声明的应用程序内部任何文件的样式。我在下面提到我使用的代码。或者,如果有人有其他选择让它变得容易或无论如何可能请建议我。提前谢谢。

App.xaml.cs -

<Application xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="DinePerfect.App">
     <Application.Resources>
        <ResourceDictionary>
            <Style  x:Key="btnStyle"  TargetType="Button">
                <Setter Property="HorizontalOptions" Value="Center" />
                <Setter Property="VerticalOptions" Value="CenterAndExpand" />
                <Setter Property="BorderColor" Value="Lime" />
                <Setter Property="BorderRadius" Value="5" />
                <Setter Property="BorderWidth" Value="5" />
                <Setter Property="WidthRequest" Value="200" />
                <Setter Property="TextColor" Value="Teal" />
            </Style>
        </ResourceDictionary>
    </Application.Resources>
</Application>

在其他文件中调用样式 -

<Button Text="Login" Style="{StaticResource btnStyle} TextColor="Black" BackgroundColor="#9C661F"  Clicked="btnLoginClicked" />

3 个答案:

答案 0 :(得分:5)

在将App类转换为基于XAML的情况下,您似乎错过了构造函数中的InitializeComponent();调用。

答案 1 :(得分:2)

我想你忘记添加InitializeComponent();在你的App.cs中。当你有一个xaml代码时,你必须调用InitializeComponent();在构造函数中。

答案 2 :(得分:1)

你实际上需要在Style中设置BackgroundColor以使BorderColor工作。

From the Button.BorderColor Documentation

  

如果Button.BorderWidth设置为0,则此属性无效。在Android上,除非将VisualElement.BackgroundColor设置为非默认颜色,否则此属性将不起作用。

风格:

<ResourceDictionary>
  <Style  x:Key="btnStyle"  TargetType="Button">
    <Setter Property="HorizontalOptions" Value="Center" />
    <Setter Property="VerticalOptions" Value="CenterAndExpand" />
    <Setter Property="BackgroundColor" Value="Black" />
    <Setter Property="BorderColor" Value="Lime" />
    <Setter Property="BorderRadius" Value="5" />
    <Setter Property="BorderWidth" Value="5" />
    <Setter Property="WidthRequest" Value="200" />
    <Setter Property="TextColor" Value="Teal" />
  </Style>
</ResourceDictionary>

Xaml中的用法:

  <Button Text="Login" Style="{StaticResource btnStyle}" />

这适合我。

编辑: Example Project