IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jan Veselý
Člen
Avatar
Jan Veselý:16.4.2016 16:39

Zdravím, jak bych správně měl nahradit otevírání nových oken ve WPF? Ve většině aplikací se mění pouze obsah okna a já nemůžu přijít na to, jak by se to dalo provést. Narazil jsem na tabControl, to mi ale přijde nepraktické, kdybych měl oken například dvacet, tak by se kód musel stávat nepřehledným

V podstatě mi jde o to, jak vytvořit jedno okno a v něm měnit obsah.

 
Odpovědět
16.4.2016 16:39
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Jan Veselý
ostrozan:16.4.2016 17:04

Přehlednost kódu nespočívá v jeho množství.
Pokud se ti nelíbí tabControl tak vždycky můžeš obsah okna smazat

this.Window.Children.Clear();

a nasáčkovat si tam něco jiného

this.Window.Children.Add(necoJineho) ;
 
Nahoru Odpovědět
16.4.2016 17:04
Avatar
Jan Veselý
Člen
Avatar
Jan Veselý:16.4.2016 17:13

Takže optimální řešení je přes tabControl?

 
Nahoru Odpovědět
16.4.2016 17:13
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na Jan Veselý
ostrozan:16.4.2016 18:32

Mám za to, že k tomuto účelu byl tabControl stvořen. :-)
Možností je v C# určitě více, ale povětšinou horších.
Taky záleží na tom, co v těch panelech /oknech chceš mít - k čemu mají sloužit.
Pokud jen teoretizuješ, pak zůstaňme u tabControlu. Jinak buď konkrétnější.

 
Nahoru Odpovědět
16.4.2016 18:32
Avatar
Honza
Člen
Avatar
Honza:19.4.2016 12:55

Pokud to chápu správně tak ti jde hlavně o to, abys neměl veškerý aplikační kód nasekaný v jednom souboru. Jde to řešit např. pomocí user controls. Např. pro každý panel nebo okno si vytvoříš userControl a tam si napíšeš aplikační logiku a pak je můžeš dynamicky vkládat třeba právě do toho tabControlu (nebo jakéhokoli jiného panelu). Navíc pokud ten userControl napíšeš šikovně (třeba tak že to rozsekáš to ještě menších komponent), můžeš ho použít na více místech pro různé účely.

Nahoru Odpovědět
19.4.2016 12:55
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Martin Gabriel
Tvůrce
Avatar
Martin Gabriel:20.4.2016 12:56

Můžeš si ty jednotlivá "okna" dát do Gridů přes sebe a pomocí vlastnosti Visibility mezi nimi přepínat. Pokud nejde o velký počet Gridů, tak je to rychlé a efektivní řešení. Přepínání mezi gridy přes Visibility se pak dá jednoduše nahradit animacemi. Já to takhle řešil už několikrát. TabControl reálně používám pro zobrazení/změnu parametrů. TabControl roztažený přes celé okno mi přijde ošklivý. :)

Nahoru Odpovědět
20.4.2016 12:56
"Be the change you want to see in the world" - Michael Scofield
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:20.4.2016 13:40

Zkus se mrknout sem: http://stackoverflow.com/…f-navigation

Nahoru Odpovědět
20.4.2016 13:40
the cake is a lie
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.