WPF Dynamically Added Controls and Getting Values

by Patrick 4. November 2008 11:11

Today's challenge was fun.

I had added a bunch of textboxes and labels to a Grid with 2 StackPanel in my code behind.


StackPanel sp1 = new StackPanel();
StackPanel sp2 = new StackPanel();
Grid g = new Grid();
                ColumnDefinition colDef1 = new ColumnDefinition {Width = new GridLength(50)};
                ColumnDefinition colDef2 = new ColumnDefinition();
                g.ColumnDefinitions.Add(colDef1);
                g.ColumnDefinitions.Add(colDef2);
gb.Content = g;
                Grid.SetColumn(sp1,0);
                g.Children.Add(sp1);
                Grid.SetColumn(sp2, 1);
                g.Children.Add(sp2);

for (int i = 1, i < = 4, i++)
{
                Label lbl = new Label {Content = "Name", Margin = new Thickness(0)};
                Grid.SetColumn(lbl, 0);
                sp1.Children.Add(lbl);
                TextBox fieldname = new TextBox {Text = "", Name = "fieldname" + i, Margin = new Thickness(0,5,0,0)};
                Grid.SetColumn(fieldname, 1);
                sp2.Children.Add(fieldname);
}

So I then wanted to get the results of what someone types into these TextBoxs.

But wait, I can't just access them like this:


string t = fieldname1.Text;

Why? Only Microsoft knows, but apparently, dynamically added controls can't be accessed this way since they don't exist in the XAML code.

So, how does one access them then? Well, that's where this cool LogicalTreeHelper function to find the control by name we use the FindLogicalNode option of the LogicalTreeHelper function

So to loop through the number of fields you added you can do the following:


List test = new List;
for (int i = 1; i < = 4; i++)
{
test.Add((LogicalTreeHelper.FindLogicalNode(Fields1, "fieldname" + i) as TextBox).Text);
}

So there you have it, a simple way to access dynamically added controls using LogicalTreeHelper and FindLogicalNode just remember to name your controls you add.

Tags: ,

Coding | C# | WPF

Microsoft C#, LINQ, XML, WPF and the Lack of Good Examples

by Patrick 1. November 2008 19:11

Ok,

My rant for the day is about trying to use Microsoft C# and LINQ and XML and WPF. I spend more time trying to figure out simple stuff, because nothing exists as solid examples of how to do what I need to do.
I spend so much of my time trying to find decent examples of how to do stuff on the net, and find nearly nothing.
Why?
I know people are doing this stuff, is it because its a closed source system and sharing the code just isn't "cool" by the users?
I am sick of it, and I am going to try to lead by example and post my minor victories in trying to do things using this great platform.

Why?
Well, couple of reasons...
1. Code should be free. Not as in not get paid for it, but how to do something should be shared, knowledge isn't worth anything unless you share it.
2. Selfish reasons, I can find different things I find much easier and watch my progression through the products
3. Cause I haven't really found a good reason to keep posting regularly on my blog, and this just might be a good excuse.

So, there you have it, my rant for the day and my promise to share my code examples of what I am trying to do.

Tags:

Coding | ASP.NET | C# | LINQ | WPF | XML | Rants | Software

Powered by BlogEngine.NET 1.6.0.0

 

Call Me

RecentComments

Comment RSS