我正在尝试在Xaml中的不同平台上呈现特定于设备的视图。
查看this link我可以看到我可以在Xaml中使用Device.OnPlatform
设置属性,如下所示:
<ContentPage.Resources>
<ResourceDictionary>
<OnPlatform x:Key=”standardFont” x:TypeArguments=”Font”>
<OnPlatform.iOS>12</OnPlatform.iOS>
<OnPlatform.Android>12</OnPlatform.Android>
<OnPlatform.WinPhone>18</OnPlatform.WinPhone>
</OnPlatform>
</ResourceDictionary>
</ContentPage.Resources>
但我想在每个平台上设置这样的视图:
<ContentPage.Resources>
<ResourceDictionary>
<OnPlatform x:Key=”NumericTextBox” x:TypeArguments=”View”>
<OnPlatform.iOS><sf:NumericTextBox/></OnPlatform.iOS>
<OnPlatform.Android><sf:NumericTextBox/></OnPlatform.Android>
<OnPlatform.WinPhone><Entry/></OnPlatform.WinPhone>
</OnPlatform>
</ResourceDictionary>
</ContentPage.Resources>
我需要这个的原因是因为Syncfusion NumericTextBox
在Windows上不起作用(我已报告此错误,但这是一种解决方法)
这可能吗?
PS。我了解自定义渲染器,但在这种情况下,因为已经有Syncfusion数字文本框的自定义渲染器,我无法使用此技术
答案 0 :(得分:4)
你几乎拥有它。您只需要使用ContentView 将其Content属性设置为您的静态资源。
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="XFApp3.Page1">
<ContentPage.Resources>
<ResourceDictionary>
<OnPlatform x:Key=”NumericTextBox” x:TypeArguments=”View”>
<OnPlatform.iOS><sf:NumericTextBox/></OnPlatform.iOS>
<OnPlatform.Android><sf:NumericTextBox/></OnPlatform.Android>
<OnPlatform.WinPhone><Entry/></OnPlatform.WinPhone>
</OnPlatform>
</ResourceDictionary>
</ContentPage.Resources>
<!-- That's the line you are missing -->
<ContentView Content="{StaticResource NumericTextBox}" ></ContentView>
</ContentPage>
你准备输入一些数字。