使用XAML在NavigationPage中的OnPlatform

时间:2017-06-23 17:07:58

标签: xamarin.forms cross-platform

鉴于此原始代码,我正试图隐藏Android上的图标:

<NavigationPage Title="Page" Icon="page_icon.png">
    <x:Arguments>
        <views:MyPage />
    </x:Arguments>
</NavigationPage>  

我试图以不同的方式使用OnPlatform,但无法使其工作。以下是我尝试过的一些事情:

<NavigationPage Title="Page">          
    <NavigationPage.Icon>     
        <OnPlatform x:TypeArguments="x:String">     
            <OnPlatform.iOS>page_icon.png</OnPlatform.iOS> 
            <OnPlatform.Android>{x:Null}</OnPlatform.Android>    
        </OnPlatform>    
    </NavigationPage.Icon>     
    <x:Arguments>
        <views:MyPage />
    </x:Arguments>
</NavigationPage> 

这产生了错误:

  

字典中没有给定的密钥。

我也试过这个:

<NavigationPage Title="Rater">
    <OnPlatform 
        x:Key="Icon"
        x:TypeArguments="x:String" 
        iOS="tab_feed.png"
        Android="{x:Null}"
    />
    <x:Arguments>
        <views:MyPage />
    </x:Arguments>
</NavigationPage>

哪个运行,但iOS上没有显示图标

2 个答案:

答案 0 :(得分:1)

不确定如何处理图标,这可能是一个单独的问题,但OnPlatform经过重新设计。以下是您现在使用它的方式:

<OnPlatform x:Key="SwitchOnColor"  x:TypeArguments="Color" >
    <On Platform="iOS,Android" >#0000FF</On>
    <On Platform="UWP">#FF0000</On>
</OnPlatform>

答案 1 :(得分:1)

(代表OP发布)。

在Yuri S的例子的帮助下,我能够创建在iOS和Android上按预期工作的标记。就是这样。

    <NavigationPage.Icon>
        <OnPlatform x:Key="SwitchOnIcon" x:TypeArguments="FileImageSource">
            <On Platform="iOS">tab_feed.png</On>
        </OnPlatform>
    </NavigationPage.Icon>