如何在所有页面的导航栏中添加图标?

bifedefrango

所以我正在尝试在我的NavigationBar中实现一个图标,以便在我的所有页面中都可以看到它...我正在使用xamarin表单,因此我希望它能够在android和iOS中都能够使用...我不是确定如何执行此操作,但是我试图将其添加到MyCar.xaml中

<customControls:BasePage xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
    xmlns:views="clr-namespace:OficinaDigitalX.Views"   
    xmlns:customControls="clr-namespace:OficinaDigitalX.ViewModel"
    x:Name="MyCar">
<customControls:BasePage.Content>
    <AbsoluteLayout>



        <StackLayout Padding="10, 0, 10, 0">


            <ListView 
                ItemsSource="{Binding Path=CarList}"
                IsPullToRefreshEnabled="False"
                SelectedItem="{Binding Path=SelectedCar}">
                <ListView.Header>
                    <Label Text="Os Meus Carros" FontSize="Large" />
                </ListView.Header>
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <TextCell Text="{Binding VID}" 
                                  TextColor="Black" 
                                  Detail="{Binding LicensePlate}"/>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </StackLayout>
    </AbsoluteLayout>
</customControls:BasePage.Content>
</customControls:BasePage>  

这是我的MyCar.xaml.cs

namespace OficinaDigitalX.Views
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MyCar : ViewModel.BasePage
{

    public MyCar()
    {
        Extensions.LoadFromXaml(this, typeof(MyCar));
        BindingContext = new MyCarViewModel(Navigation);

    }

这是我的MyCarViewModel.cs

public class MyCarViewModel : ViewModelBase
{
    public MyCarViewModel()
    {
    }
    public MyCarViewModel(INavigation navigation)
    {
        this.Navigation = navigation;
        this.SelectedCar = null;
        GetClientCars();
    }

    private List<CarInfo> _CarList;

    public List<CarInfo> CarList
    {
        get
        {
            return _CarList;
        }

        set
        {
            _CarList = value;
            OnPropertyChanged("CarList");
        }
    }

    private CarInfo _SelectedCar;

    public CarInfo SelectedCar
    {
        get
        {
            return _SelectedCar;
        }

        set
        {
            _SelectedCar = value;
            OnPropertyChanged("SelectedCar");

            if (_SelectedCar != null)
                ChangeWindow(_SelectedCar);
        }
    }

    public INavigation Navigation { get; set; }

    private void ChangeWindow(CarInfo car)
    {

        Navigation.PushAsync(new Interactions(car));
        this.SelectedCar = null;

    }

    public void GetClientCars()
    {
        string command = "asdasd";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Format(MainPage.server + command));
        request.ContentType = "application/json";
        request.Method = "POST";
        //request.ContentLength = 999999;

        using (var stream = new StreamWriter(request.GetRequestStream()))
        {
            string postData = JsonConvert.SerializeObject(command);

            //stream.Write(postData);
            stream.Flush();
            stream.Close();
        }

        HttpWebResponse response = null;

        try
        {
            response = (HttpWebResponse)request.GetResponse();
            using (var responseString = new StreamReader(response.GetResponseStream()))
            {
                CarList = JsonConvert.DeserializeObject<List<CarInfo>>(responseString.ReadToEnd());
            }
        }
        catch (WebException ex)
        {
            using (StreamReader reader = new StreamReader(ex.Response.GetResponseStream()))
            {

            }
            throw;
        }
    }

}
}

有人能帮忙吗?

怪异的阿里

在我的知识中,这样做的正确方法是扩展内容页面:

 public class BasePage : ContentPage
 {

    public ICommand CartItemCommand { get; set; }
    public ICommand NotificationPageCommand { get; set; }
    public BasePage() : base()
    {
        CartItemCommand = new Command(async () => await GoCartItemCommand());
        NotificationPageCommand = new Command(GoNotificationPage);

        Init();
    }

    private void Init()
    {
        this.ToolbarItems.Add(new ToolbarItem()
        {
            Icon = "nav_notification_btn",
            Command = NotificationPageCommand,
        });
        this.ToolbarItems.Add(new ToolbarItem()
        {
            Icon = "nav_cart_btn",
            Command = CartItemCommand
        });
    }

    }

}

完成此操作后,只需在位置ContentPage的任何地方使用此BasePage

在您的XAML中

<customControls:Basepage xmlns="http://xamarin.com/schemas/2014/forms"
        xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
        xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
        xmlns:views="clr-namespace:OficinaDigitalX.Views"
        x:Class="OficinaDigitalX.MainPage"    
        xmlns:customControls="Your Control NameSpace"
        x:Name="Main"
        NavigationPage.HasNavigationBar="True">


</customControls:Basepage> 

并在您的Xaml.cs文件中

public partial class MainPage: BasePage

请注意,两个局部类都可以根据需要从一个基类(即BasePage或ContentPage)继承。

而且,当您不想使用NavBar控件时,只需从普通ContentPage继承XAML类即可。

如有疑问,Goodluck还原!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在所有页面中包含HTML导航栏

如何在 Django Admin 的用户添加页面的导航栏中更改“添加用户”?

如何在每个页面的导航栏中显示数据?

如何在django中重写基本url以在所有页面的url中添加登录的用户名而不是应用程序名称?

如何在导航栏中添加/使用默认图标

如何在底部导航栏中添加浮动图标?

如何在Bootstrap 3的导航栏中添加带有图标的搜索框?

如何在所有活动中显示导航抽屉?

如何在所有页面完全加载之前隐藏页面的部分

HTML、CSS 导航栏项目通过在所有必需的页面中包含相同的文件来突出显示导航栏

在所有视图上添加导航栏。迅速

如何在所有页面中启用暗模式?

QML:如何在所有菜单中添加阴影?

如何在所有课堂课程中添加老师

如何在所有屏幕尺寸下将字形图标居中对齐到页面中间

导航栏,包括在所有文件中

使用javascript在所有网页中的静态导航栏

如何在导航栏odoo中添加图标?在“对话”图标之后

如何在没有导航页面的情况下更改状态栏颜色

如何在html / css中使导航栏与页面的其余部分没有空间?

反应导航:如何在所有屏幕中显示导航抽屉?

Magento 2:如何为所有页面的前端和后端添加侧边栏?

如何在所有页面上添加商店名称?

隐藏iOS导航栏中的所有内容,包括图标

如何在导航栏中添加右键?

当用户查看页面的特定部分时如何更改导航栏图标的颜色

Magento 1.7 *:如何在我的帐户页面的边栏中添加“注销”链接

Xamarin Forms-如何在没有导航页面的情况下更改状态栏的颜色

我正在尝试在所有Wordpress网站页面的顶部添加某种小部件或菜单。