Ошибка связывания контекста при передаче выбранного элемента - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь создать нижнюю навигационную панель с NuGet:ThriveGmbH.BottomNavigationBar.XF

Я надеюсь, что я думаю правильно, но это мои настройки.

Это код, который ссылается на страницу моего профиля, здесь я получаю сообщение об ошибке

Severity    Code Description    Project File    Line    Suppression State
Error   CS1729  'BottomNavPage' does not contain a constructor that takes 1 arguments   DoggaLogg.Android, DoggaLogg.iOS, DoggaLogg.UWP C:\Users\mawil3\source\repos\DoggaLogg\DoggaLogg\DoggaLogg\View\HomePage.xaml.cs    40  Active
Error   CS1729  'BottomNavPage' does not contain a constructor that takes 1 arguments   DoggaLogg.Android, DoggaLogg.iOS, DoggaLogg.UWP C:\Users\mawil3\source\repos\DoggaLogg\DoggaLogg\DoggaLogg\View\HomePage.xaml.cs    40  Active)
async void ProfileList_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
    if (e.SelectedItem != null)
    {
        await Navigation.PushAsync(new BottomNavPage(BindingContext = e.SelectedItem));
    }
}

Вот моя страница xaml bottomnavbar:

<xf:BottomBarPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="DoggaLogg.View.BottomNavPage"
         xmlns:xf="clr-namespace:BottomBar.XamarinForms"
         xmlns:pages="clr-namespace:DoggaLogg.View">


<pages:ProfilePage Title="Profile" Icon="icon" />

<pages:GoalPage Title="Goalse" Icon="icon" /></xf:BottomBarPage>

А вот Bottomnavbar.cs

namespace DoggaLogg.View{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class BottomNavPage : ContentPage
{
    public BottomNavPage ()
    {
        InitializeComponent ();
    }
}}

Из моего понимания e.selecteditem должен пройти через выбранный предмет, или я ошибаюсь?

Что может вызвать ошибку?

1 Ответ

0 голосов
/ 02 июля 2018

Вы создаете новый BottomNavPage, например: new BottomNavPage(BindingContext = e.SelectedItem), но нет конструктора, который принимает один аргумент.

Кажется, вы пытаетесь установить свойство BindingContext вашей новой страницы напрямую. Либо передайте выбранный вами элемент в качестве аргумента, который требует от вас изменения, либо добавьте конструктор к вашему BottomNavPage объекту:

public BottomNavPage (object yourItem)
{
    InitializeComponent ();

    BindingContext = yourItem;
}

Или объявить первую строку следующим образом:

await Navigation.PushAsync(new BottomNavPage()
{
    BindingContext = e.SelectedItem
});

Это создает новый BottomNavPage с конструктором без параметров, но назначает выбранный вами элемент BindingContext сразу после создания нового экземпляра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...