Gå til innhold

C#: WPF base element som støtter overlapping


Anbefalte innlegg

Tenkte å ha en slags "tab" feature i programmet mitt, bare uten tabs. Jeg skal kunne velge sida "programmatically" ved å kjøre focus() eller z-index = 0; eller noe lignende på en haug overlappende panels. Vet noen åssen jeg kan gjøre noe slikt?

Lenke til kommentar
Videoannonse
Annonse

Det har jeg allerede prøvd, men når jeg har ~20 sider blir det en god del kode å måtte sette hver og en av sidene til visible = false. Planen var å animere switch mellom tabs med opacity property. Dermed hadde jeg tenkt til å sette selected tab øverst med 0% opacity og animere til 100. Dermed passet det utrolig bra med en slags stack, slik at jeg i tillegg ikke trenger å bekymre meg om tab'en som skal fade ut.

 

Hvis det ikke finnes noen stack kontroller i wpf skal jeg selvfølgelig lage mitt eget system, men jeg vil gjerne slippe det

Lenke til kommentar

Du setter jo ikke visible manuelt.

Iterer gjennom alle objektene og sett visible = false, og deretter setter du ditt eget objekt.visible = true.

 

Du trenger ikke

 

if(tabindex == 0) 
{
 panel1.Visible = true
 panel2.Visible = false;
 panel3.Visible = false;
}

 

Istedet

 

 

for(int i = 0; i < VisualTreeHelper.GetChildCount(parentpanel); i++)
{
 UIElement elem = VisualTreeHelper.GetChild(parentpanel,i);
 elem.Visible = false;
}

 

Har ikke testet dette...

Lenke til kommentar

bare en talemåte ;-)

Du gjør ting på en måte som egentlig ikke er tilltenkt som metode.

I dette tilfellet går dette veldig greit, men i noen tilfeller kan det hende at en slik "workaround" slutter å virke når det legges til funksjonalitet i kontrollene, men slapp av. I ditt tilfelle tror jeg ikek det blir tilfelle

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...