XAML共享资源

本文关键字:共享资源 XAML | 更新日期: 2023-09-27 18:06:24

我正在尝试实现等价于CSS样式的XAML。我想创建一个自定义布局的ContentPage,我可以使用在我的应用程序的所有页面,并将有不同的值为每个平台。

特别是我开始自定义填充:我试图把这个代码在我的App.xaml文件:

<Application.Resources>
    <ResourceDictionary>
        <OnPlatform x:Key="MyPadding"
             x:TypeArguments="Thickness"
            iOS="0, 20, 0, 0"
            Android="0, 0, 0, 0"/>
        <Style
            x:Key="labelGreen"
            TargetType="Entry">
            <Setter
                Property="TextColor" 
                Value="Green"/>
        </Style>
    </ResourceDictionary>
</Application.Resources>

在单独的ContentPage中,我正在做以下操作,但它不起作用:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
        x:Class="MyApp.LoginScreen" 
        Style="{DynamicResource MyPadding}"
>

自定义条目样式工作良好。但是填充物没有。我得到的错误:"SetValue:不能转换Xamarin.Forms. onplatform ' 1[Xamarin.Forms. onplatform]。>

我做错了什么?

XAML共享资源

正如error所说,Thickness不是Style。改为:

<Application.Resources>
    <ResourceDictionary>
        <OnPlatform x:Key="MyPadding"
             x:TypeArguments="Thickness"
            iOS="0, 20, 0, 0"
            Android="0, 0, 0, 0"/>
        <Style
            x:Key="pageStyle"
            TargetType="ContentPage">
            <Setter
                Property="Padding" 
                Value="{StaticResource MyPadding}"/>
        </Style>
        <Style
            x:Key="labelGreen"
            TargetType="Entry">
            <Setter
                Property="TextColor" 
                Value="Green"/>
        </Style>
    </ResourceDictionary>
</Application.Resources>

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
        x:Class="MyApp.LoginScreen" 
        Style="{StaticResource pageStyle}">

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
        x:Class="MyApp.LoginScreen" 
        Padding="{StaticResource MyPadding}">