Avatar billede Red0z Nybegynder
03. september 2010 - 14:35 Der er 2 kommentarer og
1 løsning

Dynamisk tilføjelse i WrapPanel

Hey drengene! Sidder og prøver at lave et program der skal trække eventlogs ud af en server, og lave et foreach som så laver et nyt felt i et Wrappanel for hvert event, jeg kan sagtens få den til at gøre det med labels. Men ville gerne have at den oprettede en lille box til hver enkel eventlog, som indeholder lidt mere end bare et label, og som i sidste ende skal kunne trykkes på.

        public void ShowEvents()
        {
            string currentHost = Classes.networkClasses.networkStatic.currentHost;
            System.Diagnostics.EventLog eLog = new System.Diagnostics.EventLog("System", currentHost);

            GridLength glenght = new GridLength(25);

            foreach(EventLogEntry entry in eLog.Entries)
            {
                console = console +"\n"+ entry.EntryType.ToString();
                eventConsole.Content = console;

                wrapPanel.Children.Add((new Label()
                {
                    Foreground = System.Windows.SystemColors.ActiveBorderBrush,
                    Content = entry.EntryType.ToString()
                }));
            }
        }


Er sikker på der er en simpel og nemmere vej at gøre dette på, og det ville være rart med lidt assistance :)
Avatar billede Spotgun Seniormester
03. september 2010 - 16:25 #1
Jeg ville lave en UserControl med de elementer du vil have i hver boks.
Herefter skal du blot indsætte en ny instans af din UserControl på dit WrapPanel, i stedet for din nuværende Label.
Avatar billede Red0z Nybegynder
04. september 2010 - 00:23 #2
Super nice! mange tak for svaret :)

        public void ShowEvents()
        {
            string currentHost = Classes.networkClasses.networkStatic.currentHost;
            System.Diagnostics.EventLog eLog = new System.Diagnostics.EventLog("System", currentHost);

            foreach (EventLogEntry entry in eLog.Entries)
            {
                stackPanel.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
                    delegate()
                    {
                        stackPanel.Children.Add(new ServerSchedule.Pages.eventLogPages.UserControls.EventLog(entry.EntryType.ToString()));
                    }
                ));
            }
        }


Sådan endte det med at se ud, dispatcheren bruger jeg grundet at den kører i en BGWorker.

Læg et svar, så får du dine point. :)
Avatar billede Spotgun Seniormester
04. september 2010 - 08:44 #3
Værsgo :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester