Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – 4. diel - Programujeme pre Windows 8 - Navigácia medzi stránkami

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
Petr
Nevyplnené
Avatar
Petr:3.9.2013 14:42

Ahoj, chtěl jsem se zeptat jak by se dalo poslat více argumentů (třeba ze 3 textbloků na další stránku do 3 textboxů). Napadlo mě akorát vytvořit novou třídu, která by to uložila a jakmile by se vytvořil objekt, tak ho odeslal na další stranu přes Frame.Navigate() a tam to nějak vykutil, ale nejsem si tím jistý a nevím jak z toho pak dostat text do jednotlivých textbloků...

 
Odpovedať
3.9.2013 14:42
Avatar
Paradise
Tvůrce
Avatar
Odpovedá na
Paradise:3.9.2013 15:17

Dá se to posílat pomocí třídy, do které dáš všechny hodnoty. Pak jako parametr pošleš její instanci.

 
Odpovedať
3.9.2013 15:17
Avatar
petrzywczok
Člen
Avatar
petrzywczok:3.9.2013 16:54

Jj, to bych teda měl, ale nevím, jak to potom vytáhnout z toho parametru na té stránce, kde to posílám :-/. Myslím jako, že bych chtěl třeba dát jméno, příjmení atd. do jednotlivých textblocks. Když dám třeba textblock1.Text = e??? a nevím jak vytáhnout třeba jen jméno z té instance takhle, abych to tam nedával všechno najednou...

 
Odpovedať
3.9.2013 16:54
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovedá na petrzywczok
Petr Nymsa:3.9.2013 17:27

Ahoj, koukni na model MVVM, nad všemi stránkami si budeš držet data aplikace. A budeš k nim moct přistupovat odkudkoliv :) .... zatím ti to píšu takto stručně, o MVVM je spousta článků, každopádně se neboj zeptat

Odpovedať
3.9.2013 17:27
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
petrzywczok
Člen
Avatar
petrzywczok:25.1.2014 15:40

No tak jsem se na to vytváření po delší době vrhl a nějak si nevím rady. Momentálně řeším tohle: mám vytvořenou instanci ViewModelu na jedné stránce, kde ukládám do ObservableCollec­tion data a ty data bych teď chtěl zobrazit na jiné stránce. Zkoušel jsem tu instanci předat do konstruktoru na další stránce, ale to pak zase nevím, jak pořešit navigaci, protože když upravím konstruktor nějak takhle: public Okno2(Spravce­Vlastnosti spravcevlastnos­ti){Initialize­Component(); Datacontext = spravcevlastnos­ti;} tak mi nefunguje navigace na tu stránku pomocí this.Frame.On­Navigate(type­of(Okno2)), spravcevlastnos­ti)... Nemáte někdo ponětí, proč to tak nefunguje, případně jak to udělat?

 
Odpovedať
25.1.2014 15:40
Avatar
petrzywczok
Člen
Avatar
Odpovedá na petrzywczok
petrzywczok:25.1.2014 16:05

ještě oprava, má tam být napsáno this.Frame.Na­vigate... ale tak to mám a nefunguje

 
Odpovedať
25.1.2014 16:05
Avatar

Člen
Avatar
Odpovedá na petrzywczok
:25.1.2014 17:08

Radši používej code, takhle se na ten kód blbě dívá

 
Odpovedať
25.1.2014 17:08
Avatar
petrzywczok
Člen
Avatar
petrzywczok:25.1.2014 22:40

OK, použiji to v tomhle příspěvku :). Nakonec jsem si řekl, že si ty data prostě uložím do xml a načtu je na té další stránce, ale bohužel zase někde chyba. Mám to takhle:

public void Uloz()
{
        XmlSerializer serializer = new XmlSerializer(Neco.GetType());
        using (StreamWriter sw = new StreamWriter("neco.xml"))
        {
                serializer.Serialize(sw, Neco);
        }
}

a teď mi pro změnu vyskakuje chyba na místě, na kterém mi to nedává smysl a to pří zápisu ve StreamWriter("ne­co.xml") - píše mi to "některé argumenty přetěžované metody jsou neplatné"

 
Odpovedať
25.1.2014 22:40
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovedá na petrzywczok
Jan Vargovský:25.1.2014 22:46

Zkus nám tu dát celou vyjímku i s těmi třídami, které chceš serializovat.

 
Odpovedať
25.1.2014 22:46
Avatar
petrzywczok
Člen
Avatar
petrzywczok:25.1.2014 23:02

Takže třída co serializuju je tato:

public class Automobil
    {
        public string SPZ { get; set; }
        public string NazevVozu { get; set; }
        public string STK { get; set; }

        public Automobil() { }

        public Automobil( string spz, string nazevVozu, string stk )
        {

            SPZ = spz;
            NazevVozu = nazevVozu;
            STK = stk;
        }

Tady s ní pak pracuju:

public class SpravceAutomobil
    {
        public ObservableCollection<Automobil> Automobily { get; set; }

        public SpravceAutomobil()
        {
                Automobily = new ObservableCollection<Automobil>();
        }

        public void Pridej(string spz, string nazevVozu, string stk )
        {
            if (spz == "")
                throw new ArgumentException("SPZ nebyla zadána");
            if (nazevVozu == "")
                throw new ArgumentException("Nebylo zadáno jméno vozu");
            if (stk == "")
                throw new ArgumentException("Datum nebylo zadáno");
            Automobil automobil = new Automobil( spz, nazevVozu, stk );
            Automobily.Add(automobil);
        }


        public void Uloz()
        {
            XmlSerializer serializer = new XmlSerializer(Automobily.GetType());
            using (StreamWriter sw = new StreamWriter("automobily.xml"))
            {
                serializer.Serialize(sw, Automobily);
            }
        }

No a tohle mi to hlásí v rámci StreamWriter: Chyba 1 Některé argumenty přetěžované metody, která je nejlepší shodou pro deklaraci System.IO.Stre­amWriter.Stre­amWriter(System­.IO.Stream), jsou neplatné. Chyba 2 Argument 1: Nelze převést z typu string na typ System.IO.Stream.

Editované 25.1.2014 23:03
 
Odpovedať
25.1.2014 23:02
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 23.