Diskuze: WPF - navigace JEDNODUSE ve stejnem okne
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 25 zpráv z 25.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Můžeš použít TabControl a přepínat mezi taby, viz http://www.itnetwork.cz/…rms-poctvrte a nebo si naklikej překrývající se Gridy a měň u nich viditelnost. Visibility.Visible či Collapsed.
Super to s tema tabama se mi líbí, to zkusím a prosím tě co by jsi mi ještě poradil když bych chtel udelat nějáky menu 2 sloupce , v levym bych mel buttony a když bych na nejaky kliknul tak aby se mi zmenil obsah toho praveho sloupce. ale vse vylo v jednom okne. Díky
Jaký "obsah okna" máš na mysli (labely?, obrázky?, pozadí?,...) a jaké "změny" by se po stisku tlačítka měly provést?
děláš instalátor?
No pro me by bylo uplne idealni abych tam moh dat cokoli. v podstate aby to delalo to stejny jako kdybych udelal new window, akorat ze by se to neotevrelo v novem okne ale v pravym sloupci.
Tos to moc neupřesnil... Ptal jsem se, co chceš měnit, protože asi obrázek budeš blbě dostávat do labelu apod...
Mzslel jsem ye existuje neco jako New window , ale kterz se neotevre v novzm okne, ale v tom stavajicim nebo pripadne tam kde mu urcim, treba v druhzm sloupci kdzy ten formular budu mit roydelenej na dva sloupce.
Hm jsem v praci a mame asi blokly uploadovani cehokoli. Chtel bych abych si
proste v levym sloupci tlacitkama ovladal pravej sloupec kterej by byl ve
stejnym okne ale menilo by se v nem cokoli chci jako kdyby to bylo novy okno ,
ten obrazek poslu z domova vecer. Nasel jsem ze by to pry slo pres nejaky user control, ale nikde jsem k
tomu nenasel poradnej navod.
Prosim tě tak jsem zkoušel hledat a potřeboval bych přesně to co je v tom videu, ale kdyř píšu do toho code behind to
btn.Children.add (object); . Tak mi VS napise ze zadny Children neexistuje nevis proc? Presne tohle bych potreboval
https://www.youtube.com/watch?…
je to zhruba v 8:50 .
Prosim tě tak jsem zkoušel hledat a potřeboval bych přesně to co je v tom videu, ale kdyř píšu do toho code behind to
btn.Children.add (object); . Tak mi VS napise ze zadny Children neexistuje nevis proc? Presne tohle bych potreboval
https://www.youtube.com/watch?…
je to zhruba v 8:50 .
Children označuje všechny prvky/elementy, které jsou mezi tagy
<StackPanel> a </StackPanel> případně Gridu. Třeba tlačítka
(Button) toto nepodporují. Možná si dříve pořádně procvič XAML a
pozicování, pak ti tohle půjde bezproblémově
V tom videu právě Children nastavuje StackPanelu, má ho pojmenovaný stkTest.
Nikde jsem tu článek Gridech a StackPanelu nenašel, tak se pokusím napsat krátké shrnutí.
Grid ti dává více svobody, pro rozumné použití je třeba definovat sloupce (Column) a řádky (Row).
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
</Grid>
Tlačítko pak na určitou pozici dás takto:
<Button Grid.Row="1" Grid.Column="1" />
(počítá se od 0)
Používej relativní rozměry pomocí Auto a *. Auto znamená, že řádek či sloupec bude tak veliký, aby se do něj vešel obsah, ale ne víc. * značí, aby sežral všechno dostupné místo.
Stackpanel prostě prvky skládá pod sebe, tak jak jsou v něm seřazené v XAML kódu. Můžeš je skládat ještě vodorovně, na to má StackPanel vlastnost Orientation.
Díky za odpověd tomuhle rozumim , jde mi pravě o to jak udělat, aby se mi nějáky formulař třeba ten UserControl " propojil" s main window přesně jako to dělá ten kluk v tom videu.
Nevim jak to napsat jednoduše. 2 sloupce v levym tlačitko na ktery když
kliknu tak se mi v pravym sloupci zobrazi obsah formulaře user control nebo
nejakeho jineho ktery budu mit vytvoreny.Myslim ze to uz pujde s tim children
poplet jsem tam asi jmeno ze jsem dal jmeno button a ne stack panelu, uz se
tesim domu abych to moh zskusit
Pokud jsem Tě pochopil, tak si prostě udělej Grid, do kterého si
naskládej co chceš (labely, textboxy, atd - prostě to co chceš po kliku
zobrazovat), umístni si ho do hlavního okna tam, kde se má následně
zobrazit a nastav mu Visibility.Collapsed. Až ho budeš chtít zobrazit (tzn
v eventu tlačítka) mu nastav Visibility.Visible a je to.
Chtělo by si to projít pár tutoriálů a podle nich udělat pár programů,
protože jsi evidentně zmatený..
Ahoj no to asi presne potrebuju, podle me jsem uz prosel tutorialu tolik ze
jsem z toho zmateny . a
poradil by jsi mi nejakej ve kterym je primo priklad jak xaml tak i codebehind s
tou visibilitou?
XAML (ty Marginy jsou vygenerovené tím, že jsem si to ručně napozicoval v designeru)
<Button Name="myButton" Content="Show" Margin="158,10,182,280" Click="myButton_Click"></Button>
<Grid Name="myGrid" Margin="0,44,0,0" Visibility="Collapsed">
<Label Name="myLabel" Content="Text test text test text" Margin="0,0,0,244"></Label>
<TextBox Name="myTextBox" Margin="0,31,0,217"></TextBox>
<Button Name="mySaveButton" Content="Save" Margin="0,63,268,185"> </Button>
</Grid>
Code:
private void myButton_Click(object sender, RoutedEventArgs e)
{
if (myGrid.Visibility != Visibility.Visible)
myGrid.Visibility = Visibility.Visible;
else
myGrid.Visibility = Visibility.Collapsed;
}
EDIT:
http://www.wpftutorial.net/
Tady je spousta užitečných věcí o WPF. Stačí hledat, najdeš toho na netu
mraky..
Není zač - ber to jen jako příklad pro tu Visibilitu. Absolutní
pozicování posléze moc nepoužívej (když zmenší okno, tak to zakryje
obsah Tvého gridu), ale tak to už je povídání k nějakému dalšímu
tutorialu.
Nastavovat Visibilitu se posléze dá spoustě objektů (tlačítka, labely, textboxy, nebo třeba celé gridy, stackpanel, atp). Pak je ještě supr vlastnost IsEnabled - například u tlačítka se s tím dá krásně hrát, když chceš, aby uživatel neměl možnost na něj klikat, ale aby ho viděl. Použít se to dá třeba u potvrzování licence - pokud si uživatel nesjede scrollem nakonec, tak je necháš defaultně:
acceptButton.IsEnabled = false
A na konci scrollování zase nastavíš true a je to.
(to už jsem ale asi trochu off-topic )
Zobrazeno 25 zpráv z 25.