Xamarin.forms 习惯用法上的设备差异Xaml设置

Xamarin.forms 习惯用法上的设备差异Xaml设置,xamarin.forms,Xamarin.forms,我需要使用OnIdiom,我正在设置按钮的宽度和高度,但如果我在平板电脑和手机上显示按钮,则按钮是相同的。你能告诉我我做错了什么吗 <Button x:Name="ScanButton" Padding="0" VerticalOptions="End" HorizontalOptions="CenterAndExpand"> <Button.S

我需要使用OnIdiom,我正在设置按钮的宽度和高度,但如果我在平板电脑和手机上显示按钮,则按钮是相同的。你能告诉我我做错了什么吗

<Button  
        x:Name="ScanButton"  Padding="0"
        VerticalOptions="End" HorizontalOptions="CenterAndExpand">
        <Button.Style>
            <OnIdiom x:TypeArguments="Style" Tablet="{StaticResource PrimaryButtonStyleTablet}" Phone="{StaticResource PrimaryButtonStylePhone}"></OnIdiom>
        </Button.Style>
      </Button>     

<Style x:Key="PrimaryButtonStylePhone" TargetType="Button">
                <Setter Property="BackgroundColor" Value="{DynamicResource ButtonColor}" />
                <Setter Property="TextColor" Value="{DynamicResource PrimaryTintColor}" />
                <Setter Property="FontSize" Value="20" />
                <Setter Property="CornerRadius" Value="25"/>
                  <Setter Property="WidthRequest" Value="200"/>
                <Setter Property="HeightRequest" Value="33"/>
            </Style>
            <Style x:Key="PrimaryButtonStyleTablet" TargetType="Button">
                <Setter Property="BackgroundColor" Value="{DynamicResource ButtonColor}" />
                <Setter Property="TextColor" Value="{DynamicResource PrimaryTintColor}" />
                <Setter Property="FontSize" Value="20" />
                <Setter Property="CornerRadius" Value="25"/>
              <Setter Property="WidthRequest" Value="390"/>
                <Setter Property="HeightRequest" Value="33"/>
            </Style>

您需要在Setter.Value中使用
OnIdiom

例如,修改
样式的代码如下:

<Style x:Key="PrimaryButtonStyle"
        TargetType="Button">
    <Setter Property="BackgroundColor">
        <Setter.Value>
            <OnIdiom Phone="{DynamicResource phoneDynamicResource}"
                        Tablet="{DynamicResource tableDynamicResource}"/>
        </Setter.Value>
    </Setter>
    <Setter Property="TextColor">
        <Setter.Value>
            <OnIdiom Phone="Blue" Tablet="Green"/>
        </Setter.Value>
    </Setter>
    <Setter Property="FontSize">
        <Setter.Value>
            <OnIdiom Phone="20" Tablet="20"/>
        </Setter.Value>
    </Setter>
    <Setter Property="CornerRadius">
        <Setter.Value>
            <OnIdiom Phone="25" Tablet="25" />
        </Setter.Value>
    </Setter>
    <Setter Property="WidthRequest">
        <Setter.Value>
            <OnIdiom Phone="200" Tablet="390" />
        </Setter.Value>
    </Setter>
    <Setter Property="HeightRequest">
        <Setter.Value>
            <OnIdiom  Phone="33" Tablet="33" />
        </Setter.Value>
    </Setter>
</Style>

@Rntakokoi,但它在我的本地网站上运行。也许项目中有什么地方出了问题。您可以在这里共享一个没有实际数据的示例项目链接,我将对此进行检查。我在哪里设置这个?@Rntakokoi这里是
DynamicResource
与您的共享代码相同。如果需要使用,您可以参考这里:但是,不理解为什么这里需要使用这个。它现在可以工作了,我想它没有保存。我使用的是VS Mac,有时有点不可靠。对不起confusion@Rntakokoi太好了!很高兴这会有帮助。
<Button x:Name="ScanButton"
        Padding="0"
        VerticalOptions="End"
        Text="Button"
        Style="{StaticResource PrimaryButtonStyle}"
        HorizontalOptions="CenterAndExpand">
</Button>