Exemplo n.º 1
0
        /// <summary>
        /// Metoda pro vytvoření interní kolekce obsahující pouze položky vykreslované na konkrétní stránku.
        /// </summary>
        private void VyberPolozkyNaStranku()
        {
            // Určení indexu položky pro výběr na základě počtu již vykreslených stran
            int StartIndex = CisloStranky * MaxPolozekNaStranku;

            // Smazání kolekce pro možnost přidání nových dat
            PolozkyNaJedneStrance.Clear();

            // Pokud v kolekci je více položek než se vejde na 1 stránku, vybere se pouze maximální počet na stránku
            if ((StartIndex + MaxPolozekNaStranku) <= SeznamPolozek.Count)
            {
                // Postupné přidání určitého počtu položek do kolkece pro vykreslení 1 strany
                for (int index = StartIndex; index < (StartIndex + MaxPolozekNaStranku); index++)
                {
                    PolozkyNaJedneStrance.Add(SeznamPolozek[index]);
                }
            }
            // Pokud v kolekci zbýva jen několik položek pro vykreslení, vybere se daný počet na poslední stránku
            else
            {
                // Postupné přidání určitého počtu položek do kolkece pro vykreslení 1 strany
                for (int index = StartIndex; index < SeznamPolozek.Count; index++)
                {
                    PolozkyNaJedneStrance.Add(SeznamPolozek[index]);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Vytvoření grafické reprezentace položek na 1 stránce a seskupení těchto položek do interní kolekce.
        /// </summary>
        private void VytvorGrafickouStrankuPolozek()
        {
            // Smazání obsahu stránky za účelem vykreslení nových dat
            this.StrankaPolozek.Children.Clear();

            // Vytvoření StackPanel pro seskupení grafických prvků na 1 stránce
            StackPanel Stranka = new StackPanel {
                Orientation = Orientation.Vertical
            };

            // Postupné vytvoření grafické reprezentace položky a přidání do kolkece grafických položek
            foreach (Polozka polozka in PolozkyNaJedneStrance)
            {
                // Vytvoření bloku reprezentující 1 položku na stránce
                StackPanel GrafPolozka = new StackPanel
                {
                    Orientation = Orientation.Vertical,
                    Background  = Controller.BarvaPozadi
                };

                // Název položky
                Label nazev = new Label
                {
                    Content  = polozka.Nazev + ":",
                    FontSize = 17
                };

                // Hodnota položky
                Label cena = new Label
                {
                    Content  = polozka.Cena.ToString() + " Kč",
                    FontSize = 18
                };

                // Oddělovací čára
                Rectangle deliciCara = new Rectangle
                {
                    Width  = 200,
                    Height = 2,
                    Fill   = Brushes.DarkBlue
                };

                // Přidání prvků do bloku položky
                GrafPolozka.Children.Add(nazev);
                GrafPolozka.Children.Add(cena);
                GrafPolozka.Children.Add(deliciCara);

                // Uložení indexu položky v seznamu pro následnou identifikaci konrétní položky
                GrafPolozka.Name = "obr" + PolozkyNaJedneStrance.IndexOf(polozka).ToString();

                // Přidání událostí pro grafický blok určený pro vykreslení stránky položek
                GrafPolozka.MouseDown  += GrafPolozka_MouseDown;
                GrafPolozka.MouseMove  += GrafPolozka_MouseMove;
                GrafPolozka.MouseLeave += GrafPolozka_MouseLeave;

                // Přidání bloku na stránku
                Stranka.Children.Add(GrafPolozka);
            }


            /* Doplnění stránky prázdnými bloky pro zajištění stálé velikosti stránky z důvodu pohodlnějšího ovládání kolečkem myši */

            // Počet prázdných bloků potřebných pro doplnění stránky
            int PocetPrazdnychBloku = MaxPolozekNaStranku - PolozkyNaJedneStrance.Count;

            // Pomocná proměnná pro uchování výšky vytvořeného bloku
            int VyskaPrazdnehoBloku = (int)Math.Floor(360.0 / MaxPolozekNaStranku);

            // Přidání určitého počtu prázdných bloků pro dpolnění stránky na celkovou velikost
            for (int i = 0; i < PocetPrazdnychBloku; i++)
            {
                StackPanel prazdnyBlok = new StackPanel
                {
                    Background = Controller.BarvaPozadi,
                    Height     = VyskaPrazdnehoBloku,
                    Width      = 200
                };
                Stranka.Children.Add(prazdnyBlok);
            }


            // Vytvoření popisku pro označení aktuální stránky
            Label OznaceniStranky = new Label
            {
                FontSize   = 12,
                Content    = "Strana " + (CisloStranky + 1).ToString() + " z " + MaximalniPocetStran.ToString(),
                Foreground = Brushes.Red
            };

            // Přidání popisu do bloku stránky
            Stranka.Children.Add(OznaceniStranky);

            // Uložení indexu stránky pro identifikaci dat a orientaci v celkovém seznamu
            Stranka.Name = "str" + CisloStranky.ToString();

            // Přidání události pro stránku graficky vykreslených dat
            Stranka.MouseWheel += Stranka_MouseWheel;

            // Uložení grafické reprezentace stránky do interní proměnné
            this.StrankaPolozek.Children.Add(Stranka);
        }