C# 使用xaml在Xamarin.Forms中为iPhone和iPad提供单独的UI

C# 使用xaml在Xamarin.Forms中为iPhone和iPad提供单独的UI,c#,android,ios,xaml,xamarin.forms,C#,Android,Ios,Xaml,Xamarin.forms,我一直在开发一个支持iOS和Android平台的Xamarin.Forms应用程序。用户界面主要是在Forms PCL项目中使用XAML构建的。我知道通过使用代码是可能的 if(Device.OS == TargetPlatform.iOS && Device.Idiom == TargetIdiom.Tablet) 如何通过XAML为iPad构建新的用户界面?您可以在XAML中使用习惯用语valueOnIdiom: <Grid VerticalOptions="

我一直在开发一个支持iOS和Android平台的Xamarin.Forms应用程序。用户界面主要是在Forms PCL项目中使用XAML构建的。我知道通过使用代码是可能的

if(Device.OS == TargetPlatform.iOS && Device.Idiom == TargetIdiom.Tablet)

如何通过XAML为iPad构建新的用户界面?

您可以在XAML中使用习惯用语value
OnIdiom

<Grid VerticalOptions="FillAndExpand">
  <Grid.ColumnSpacing>
    <OnIdiom x:TypeArguments="x:Double"
             Phone="20"
             Tablet="40"/>
 </Grid.ColumnSpacing>
</Grid>
看看James Montemagno,他准确地描述了你的问题

*编辑:根据惯用语在2
ContentView
s之间切换的方法完全相同:

XAML:


谢谢你的回复!!将检查并返回。@DipankarSutradhar我使用了相同的方法,但使用了
ContentView
的平板电脑和手机版本,而不是创建单独的页面。效果基本上是一样的。@hvaughan3您是否可以发布一个完整的答案,并解释该技巧,将非常有用,thanks@WickedW我发布的代码是否存在特定问题?或者你需要关于哪个部分的更多信息?@hvaughan3你发布了代码吗?您提到了一个关于ContentView切换的可能不错的解决方案,只是想看看您是如何做到这一点的。
if (Device.Idiom == TargetIdiom.Tablet || Device.Idiom == TargetIdiom.Desktop)
    await Navigation.PushAsync(new TabletPage());
else
    await Navigation.PushAsync(new Page());
<ContentPage x:Name="MyPage"></ContentPage>
if (Device.Idiom == TargetIdiom.Tablet || Device.Idiom == TargetIdiom.Desktop)
    MyPage.Content = new LargeDisplayContentView();
else
    MyPage.Content = new SmallDisplayContentView();