如何在Xamarin Forms中设置页面图标

时间:2017-07-13 12:15:36

标签: c# xamarin xamarin.forms

我尝试在Xaml中为我的页面设置Icon:

Icon="icon.png

但它没有用,所以我找到了其他解决方案:How to add an icon in navigation bar for navigation page in xamarin forms for android? 它的自定义渲染和工作:

[assembly: ExportRenderer(typeof(NavigationPage), typeof(CustomMapRenderer))]
namespace XamarinFormsMaps.Droid
{
    public class CustomMapRenderer : NavigationPageRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<NavigationPage> e)
        {
            base.OnElementChanged(e);
            var bar = (Android.Support.V7.Widget.Toolbar)typeof(NavigationPageRenderer)
            .GetField("_toolbar", BindingFlags.NonPublic | BindingFlags.Instance)
            .GetValue(this);
            bar.SetLogo(Resource.Drawable.icon); //how to load other icon, when Page is changing?
        }
    }
}

但我想为其他页面设置其他图标...它的代码为所有页面设置相同的图标。如何解决?

1 个答案:

答案 0 :(得分:2)

使用以下代码更改导航的当前页面时,您可以收到通知。 它是NavigationPageRenderer中的一种方法。

    protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
    {
        if (e.PropertyName == "CurrentPage")
        {
            var page = Element.CurrentPage as ContentPage;
            if (page != null)
            {
                //do what you want.
            }
        }
    }