如何在 Xamarin 中使用具有 android/IOS 特定视图的控制模板
Posted
技术标签:
【中文标题】如何在 Xamarin 中使用具有 android/IOS 特定视图的控制模板【英文标题】:How to use a Control Template with android/IOS specific views in Xamarin 【发布时间】:2020-12-27 18:27:54 【问题描述】:我希望在整个 Xamarin 应用程序中使用一致的页脚。
为了尝试实现这一点,我在我的 App.xaml 类中有一个 ControlTemplate
元素,定义如下:
<ControlTemplate x:Key="MainPageTemplate">
<StackLayout>
<ContentPresenter VerticalOptions="FillAndExpand" />
.
.
.
</StackLayout>
</ControlTemplate>
我在我的 xaml 窗口中使用 ContentPage 标记内的ControlTemplate="StaticResource MainPageTemplate"
引用它。
但是,我有两个不是常规内容页面的页面,因为它们都以特定于平台的方式实现,一个带有 .axml 文件(.android 项目),一个带有情节提要文件(.ios 项目)。
有没有办法让这些文件使用 Xamarin ControlTemplate,这样即使视图的其余部分是特定于平台的,页脚仍会出现在视图的底部?
【问题讨论】:
【参考方案1】:我们无法将特定平台的文件直接引用到 xaml。在您的情况下,如果您想在不同的平台上实现不同的效果,您可以使用 Device 类,如下所示
<StackLayout>
<StackLayout.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,20,0,0" />
<On Platform="Android, UWP" Value="0,0,0,0" />
</OnPlatform>
</StackLayout.Margin>
...
</StackLayout>
更多详情可以参考https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/device。
【讨论】:
此代码 sn-p 来自哪个文件?它来自 App.xaml 还是其他文件,为什么这有助于让所有文件都使用一个页脚栏? 您可以在任何 xaml 文件中使用 Device 类。 我想要说明的一点是,我只想在一个地方编写页脚的代码,它适用于所有视图,甚至适用于特定于平台的文件。如果我想实现这一点,我会将您建议的这个设备 xaml 放在哪里? 可以放在 ControlTemplate 中。 如果对你有帮助别忘了采纳哦:) 它将帮助更多有类似问题的人。以上是关于如何在 Xamarin 中使用具有 android/IOS 特定视图的控制模板的主要内容,如果未能解决你的问题,请参考以下文章
如何在 xamarin 跨平台应用程序中创建具有 sqlite 支持的 PCL
我想在原生 App 的 Android Xamarin 布局中使图像具有粘性。我正在使用 axml 进行布局渲染 [关闭]