Xamarin.Forms:如何仅在特定平台上设置Style中的值

时间:2017-10-20 10:52:11

标签: xamarin.forms

在xamarin表单中的样式(在xaml中定义)我可以定义特定于值的平台,如下所示:

<OnPlatform x:TypeArguments="Font" Android="30" iOS="40" WinPhone="20" x:Key="TitleFontSize" />

<Style x:Key="MyTitleLabel" TargetType="Label"">
    <Setter Property="Font" Value="{StaticResource TitleFontSize}" />
</Style>

我是否也可以通过某种方式定义样式,以便&#34; Font&#34;对于某些plarforms,它是否保持默认值(根本没有设置)?

这样的事情:

<Style x:Key="MyTitleLabel" TargetType="Label"">
    <OnPlatform>
    <OnPlatform.Android>
        <Setter Property="Font" Value="30" />
    </OnPlatform.Androud>
    </OnPlatform>
</Style>

2 个答案:

答案 0 :(得分:2)

这应该有效:

<Style x:Key="MyTitleLabel" TargetType="Label"">
   <Setter Property="Font">
     <Setter.Value>                   
       <OnPlatform x:TypeArguments="x:Double">
          <On Platform="Android">30</On>
          <!--?<On Platform="iOS">20</On>-->
       </OnPlatform>
     </Setter.Value>
   </Setter>
</Style>

答案 1 :(得分:1)

无法避免设置值 - 如果未指定任何值,则默认为default(T)

但是,使用最新的XF版本(> 2.4.0.282),可以使用Default property来指定回退值。

<OnPlatform x:TypeArguments="x:Double" Default="25"> <!-- specify default value here -->
    <OnPlatform.Android>
        <Setter Property="Font" Value="30" />
    </OnPlatform.Androud>
</OnPlatform>