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)
