Avatar billede montago Praktikant
13. november 2007 - 16:26 Der er 3 kommentarer og
1 løsning

Windows App : WPF : Canvas + Dockpanel - problem med focus()

i et Window Docker jeg forskellige UIElementer

ét af dem er et object af typen Grid:

//Class MyGrid : Grid
MyGrid PropertyGrid = MyGrid.Instance; //Singleton
StackPanel spProps = new StackPanel();
spProps.Children.Add(PropertyGrid);
DockPanel.SetDock(spProps, Dock.Right);
dock.Children.Add(spProps);

//default work area
dock.Children.Add(canvas);

----


på mit Canvas har jeg nogle Elementer som jeg kan selecte med musen, når dette sker, bliver nogle metoder i MyGrid aktiveret for at vise egenskaberne fra Elementet:

public void Assign(MyRectangle mr){
//sætter den statiske varible Object til mr instansen
  Object = mr;
  Blur();
  Update(); //opdater Layout
}

private void Blur(){
  this.ColumnDefinitions.Clear();
  this.RowDefinitions.Clear();
  this.Children.Clear();
}

public void Update(){
    //Indeholder logic som udprinter bl.a. TexBox'e i Grid'et
    PropertyInfo[] pi = Object.GetType().GetProperties();
    foreach (PropertyInfo prop in pi)
    {
        this.RowDefinitions.Add(new RowDefinition());
        //--------------------------------------------------
       
        if (prop.PropertyType.ToString().Equals("System.String"))
        {
            TextBlock textBlock = new TextBlock();
           
            textBlock.Text = prop.Name;
           
            textBlock.Margin = new Thickness(2);
            Grid.SetColumn(textBlock, 0);
            Grid.SetRow(textBlock, index);
            this.Children.Add(textBlock);
           
            TextBox textBox = new TextBox();
           
            textBox.Text = prop.GetValue(Object, null).ToString();
            textBox.Name = prop.Name;
            textBox.TextChanged += TextChanged;
           
            Grid.SetRow(textBox, index);
            Grid.SetColumn(textBox, 1);
            this.Children.Add(textBox);
        }
    }
}



Mit problem består i at Blur metoden ikke virker efter hensigten... det lader til at Focus() aldrig forsvinder fra TextBox'en i mit PropertyPanel

så selvom jeg Clear() alle elementer, eksisterere deres event stadig og måske også deres UIelement :( ??

hvordan kan jeg fjerne elementerne fra mit Grid, sådan at Focus skifter til MyWindow (Vinduet)
Avatar billede nielle Nybegynder
16. november 2007 - 22:15 #1
Er du kommet vidre med denne her?

Hvis ikke, så vil jeg da gerne se noget mere kode og have lidt mere beskrivelse af problemet. Det er lige som om at jeg mangler en vígtig brik hvis jeg skal forstå den.
Avatar billede montago Praktikant
18. november 2007 - 11:19 #2
hent projektet på http://mdk2002.dyndns.org/Projekt.rar

prøv at køre det...

test:

1. brug CTRL til at markere flere klasser med musen
2. ændre derefter på een af klassernes navn via property panelet
3. nu virker ctrl ikke mere -- og hvis du skriver, bliver teksten insat i den sidste texbox du skrev i...
Avatar billede nielle Nybegynder
18. november 2007 - 21:45 #3
Jeg er normalt ikke så vild med at hjælpe off-line.

Bortset fra det så vil jeg da stadig gerne have noget mere forklaring ... koden er ikke nødvendigvis selvforklarende.
Avatar billede montago Praktikant
30. januar 2008 - 09:12 #4
Jeg fik det til at virke....

lidt underlig kode-fejl...
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