我有一个网格,其中Android RowDefinition(heigh)t为100,在iO上为120。如何在Xaml中对每个平台标识执行此操作。
<ContentPage.Resources>
<ResourceDictionary>
<OnPlatform x:Key="GridSize" x:TypeArguments="GridLength" iOS="120" Android="100" />
</ResourceDictionary>
</ContentPage.Resources>
<Grid RowSpacing="0" x:Name="grid" AbsoluteLayout.LayoutFlags="All"
<Grid.RowDefinitions>
<RowDefinition Height="{StaticResource GridSize}" />
<RowDefinition Height="60" />
<RowDefinition Height="280" />
</Grid.RowDefinitions>
</Grid>
这种方式不起作用。
答案 0 :(得分:0)
您是否尝试过直接而不是通过资源进行操作?
<Grid RowSpacing="0" x:Name="grid" AbsoluteLayout.LayoutFlags="All"
<Grid.RowDefinitions>
<RowDefinition>
<RowDefinition.Height>
<OnPlatform x:TypeArguments="GridLength">
<On Platform="Android">100</On>
<On Platform="iOS"120/On>
</OnPlatform>
</RowDefinition.Height>
</RowDefinition>
<RowDefinition Height="60" />
<RowDefinition Height="280" />
</Grid.RowDefinitions>
</Grid>
或者,您可以使用较新的markup extension:<RowDefinition Height="{OnPlatform 100, iOS=120, Android=100}" />
答案 1 :(得分:0)
不确定这是否归因于Xamarin表单版本不同吗? 我已经通过v 3.1和3.3进行了测试,并在ContentPage之后进行了测试,然后得到了模拟器屏幕...因此看来它应该可以工作。
有关设置的详细信息吗?
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:TestGrid" x:Class="TestGrid.MainPage">
<ContentPage.Resources>
<ResourceDictionary>
<OnPlatform x:Key="GridSize" x:TypeArguments="GridLength" iOS="220" Android="50" />
</ResourceDictionary>
</ContentPage.Resources>
<Grid RowSpacing="0" x:Name="grid">
<Grid.RowDefinitions>
<RowDefinition Height="{StaticResource GridSize}" />
<RowDefinition Height="60" />
<RowDefinition Height="280" />
</Grid.RowDefinitions>
<BoxView Grid.Row="0" BackgroundColor="Lime" Color="Lime" />
<BoxView Grid.Row="1" BackgroundColor="Yellow" Color="Yellow" />
</Grid>
</ContentPage>