Avatar
Jan Veselý
Člen
Avatar
Jan Veselý:

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. dubna 16:39
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Jan Veselý
ostrozan:

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. dubna 17:04
Avatar
Jan Veselý
Člen
Avatar
Jan Veselý:

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

 
Nahoru Odpovědět 16. dubna 17:13
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na Jan Veselý
ostrozan:

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  +2 16. dubna 18:32
Avatar
Honza
Člen
Avatar
Honza:

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  +1 19. dubna 12:55
Snadnou cestou se daleko nedostanete, je tam velká tlačenice...
Avatar
Martin Gabriel:

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. dubna 12:56
"Be the change you want to see in the world" - Michael Scofield
Avatar
Nahoru Odpovědět  +1 20. dubna 13:40
Why so serious? -Joker
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.