C# 我可以使用Xaml中的Device.OnPlatform设置特定于设备的视图吗?

C# 我可以使用Xaml中的Device.OnPlatform设置特定于设备的视图吗?,c#,xaml,xamarin,xamarin.forms,C#,Xaml,Xamarin,Xamarin.forms,我正在尝试在Xaml的不同平台上呈现特定于设备的视图 通过查看,我可以看到我可以在Xaml中使用Device.OnPlatform设置属性,如下所示: <ContentPage.Resources> <ResourceDictionary> <OnPlatform x:Key=”standardFont” x:TypeArguments=”Font”> <OnPlatform.iOS>12</OnPlatform.iOS> <On

我正在尝试在Xaml的不同平台上呈现特定于设备的视图

通过查看,我可以看到我可以在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>

12
12
18
但我想在每个平台上设置如下视图:

<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数字文本框已经有了自定义渲染器,所以我无法使用此技术

您几乎拥有它。您只需要使用ContentView 将其内容属性设置为静态资源

<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>


您可以输入一些数字。

您可以使用Device.OnPlatform创建所有3个文本框,并更改它们在C#中的可见性。@AlashAmin感谢您的建议。不幸的是,在视图中添加一个
Syncfusion数值文本框
,会破坏应用程序。但如果不是这样的话,那将是一个好主意。你可以做一件事,从C代码中添加文本框。创建父布局,然后将这些文本框添加为子元素。您是否确实尝试过并验证过它是否有效?我有一个很小的问题,但我需要使用适用于Android和iOS的DynamicResource,但适用于UWP的StaticResource。你知道我如何做到这一点吗?我不确定你的问题是否正确,但你可以在标签中添加你的{dinamicsource}。所以它看起来像:我已经试过了,它不起作用,但我想出了另一个解决方案。谢谢你的回复!