• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

xamarin lista

Object Storage Arubacloud
0 głosów
212 wizyt
pytanie zadane 18 marca 2022 w C# przez DXC Użytkownik (500 p.)

siema mam problem jak wejde w liste to chciałbym aby wyswietlało mi produkty ktore sie w niej znajdują na innej stronie a przerzuca mnie tylko na pustą strone, jak to zrobic?

kod 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using Lista.Classes;
using System.Collections.ObjectModel;

namespace Lista.Views
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class FirstPage : ContentPage
    {
        public ObservableCollection<Lists> productList { get; set; }
        public FirstPage()
        {
            InitializeComponent();

            productList = new ObservableCollection<Lists>
            {
                new Lists("w lidlu", new List<Product>
                {
                    new Product { Name = "ogórki"},
                    new Product { Name = "poprotka"},
                    new Product { Name = "woda"},
                }),
                new Lists("elektryczny", new List<Product>
                {
                    new Product { Name = "kabel hdmi"},
                    new Product { Name = "adapter bluetooth"},
                    new Product { Name = "baterie"},
                })
            };
            ProductListView.ItemsSource = productList;
        }

        private void Button_Clicked(object sender, EventArgs e)
        {

        }

        private void MenuItem_Clicked(object sender, EventArgs e)
        {
            var menuitem = sender as MenuItem;
            var product = menuitem.CommandParameter as Product;

            foreach (var lists in productList)
            {
                if (lists.Contains(product))
                {
                    lists.Remove(product);
                }
            }

        }

        private void Button_Clicked_1(object sender, EventArgs e)
        {
            var button = sender as Button;
            var lists = button.CommandParameter as Lists;

            lists.preview();
        }

        private void Button_Clicked_2(object sender, EventArgs e)
        {
            ShowDialogAsync();
        }

        private void MenuItem_Clicked_1(object sender, EventArgs e)
        {
            //var menuitem = sender as MenuItem;
            //var listt = menuitem.CommandParameter as Lists;

            //listt.Remove(listt);
        }

        private void createlist(string listname)
        {
            var productList = new List<Product>
            {
                //new Product()
                //{
                //    Name = "Jabłka"
                //},
                //new Product()
                //{
                //    Name = "Jogurt"
                //}
            };

            var lists = new Lists(listname.ToString(), productList);
            this.productList.Add(lists);
        }

        private async void ShowDialogAsync()
        {
            string result = await App.Current.MainPage.DisplayPromptAsync("Tworzenie listy", "Podaj nazwe listy:");
            if (result != null)
            {
                createlist(result);
            }
            else
            {

            }
                      
        }

        

        private void TapGestureRecognizer_Tapped_1(object sender, EventArgs e)
        {
            var senderBindingContext = ((StackLayout)sender).BindingContext;
            var lists = (Lists)senderBindingContext;

            Navigation.PushAsync(new DetailsPage(lists));

        }

        private void Button_Clicked_3(object sender, EventArgs e)
        {
            Navigation.PushAsync(new OtherPage());
        }

        private void Button_Clicked_4(object sender, EventArgs e)
        {
            Navigation.PushAsync(new SettingsPage());
        }
    }

}

na tej stronie maja sie wyswietlac produkty

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Lista.Views.DetailsPage">
    <StackLayout>
        <ListView
            x:Name="ListListView"
            HasUnevenRows="True"          
            SeparatorColor="White"
            BindingContext="">

         
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout
                            >

                            <Label 
                                Text="{Binding Name}"
                               
                                />
                            
                            <!--zrobic buttona albo itemselected co zmienia swoj text z odznacz na fajke-->

                        </StackLayout>
                       
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>
</ContentPage>

a tu code behind

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using Lista.Classes;

namespace Lista.Views
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class DetailsPage : ContentPage
    {
        public Lists Lists { get; set; }
        public DetailsPage(Lists lists)
        {
            Lists = lists;
            this.BindingContext = Lists;

            InitializeComponent();          
        }
    }
}

funkcja TapGestureRecognizer_Tapped_1 ma mnie przezucac na tą strone z produktami danej listy

 

1 odpowiedź

0 głosów
odpowiedź 19 marca 2022 przez PH03NIX Mądrala (6,130 p.)
edycja 20 marca 2022 przez PH03NIX

Przypisujesz do listy pusty "biding"

  ... BindingContext="">

Przypisz bezpośrednio bindingcontext w code behind dla listy, albo użyj 

   BindingContext="{Binding .}">

 

komentarz 20 marca 2022 przez DXC Użytkownik (500 p.)
No nadal nie działa
komentarz 20 marca 2022 przez PH03NIX Mądrala (6,130 p.)
Sprawdź co otrzymujesz w 117 linii, może item, który przechwytuje tapnięcie ma inny context niż oczekujesz. Możesz też spróbować ustawić bindingcontext bezpośrednio do listview przy załadowaniu ListListView.BindingContext = Lists;

Podobne pytania

0 głosów
1 odpowiedź 114 wizyt
pytanie zadane 21 stycznia 2022 w C# przez patryk241 Użytkownik (700 p.)
0 głosów
0 odpowiedzi 218 wizyt
pytanie zadane 1 grudnia 2021 w C# przez kuba412 Początkujący (310 p.)
–1 głos
0 odpowiedzi 462 wizyt
pytanie zadane 26 września 2021 w C# przez Joh Początkujący (300 p.)

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...