If I was to write something like this, I'd take a layout panel (Grid,
Stackpanel, WrapPanel, or custom control based on Panel) and bind it to an
ObservableCollection.
Then you can have a template that displays using a Template Selector and
basically show the user control that matches up with the type of the object
in your collection. Use views and viewmodels etc. MVVM.

Hope that's not too vauge. Its home time... :)

On Fri, Apr 20, 2012 at 5:23 PM, Greg Keogh <[email protected]> wrote:

> Jordan, I’m writing a general purpose “dashboard” where it can be
> populated with various charts, pickers, panels etc in different ways. I ask
> for blocks of XML to feed into the various controls, so it’s all rather
> flexible and dynamic. I have to match the “id” of a block of XML to a child
> control (somewhere down the tree) with a matching “id” and pass it the XML
> to render. I was wondering how binding could used in this situation, but
> rather than create some obtuse but lovely wedding cake binding library, in
> haste I decided to just find the child and shove the XML into it (10 lines
> of code). If this thing goes live then I’ll go back to making a nice cake
> out of it.****
>
> ** **
>
> I eventually decided I like this bit of code for enumerating children of a
> certain type (can it be made better?)****
>
> ** **
>
> public static IEnumerable<T> GetVisuals<T>(this DependencyObject root)
> where T : DependencyObject****
>
> {****
>
>     int count = VisualTreeHelper.GetChildrenCount(root);****
>
>     for (int i = 0; i < count; i++)****
>
>     {****
>
>         var child = VisualTreeHelper.GetChild(root, i);****
>
>         if (child is T)****
>
>         {****
>
>             yield return (T)child;****
>
>         }****
>
>         foreach (var descendants in child.GetVisuals<T>())****
>
>         {****
>
>             yield return descendants;****
>
>         }****
>
>     }****
>
> ** **
>
> }****
>
> ** **
>
> As an aside: I said several months ago that making general purpose utility
> routines enumerable is vitally important ... so you can parallelise them.
> Back then I had a file scanning routine which ran for 40 minutes or so,
> when I used DirectoryInfo.EnumerateFiles with Parallel.For it took less
> than 10 minutes.****
>
> ** **
>
> Greg ****
>
> ** **
>
> _______________________________________________
> ozsilverlight mailing list
> [email protected]
> http://prdlxvm0001.codify.net/mailman/listinfo/ozsilverlight
>
>
_______________________________________________
ozsilverlight mailing list
[email protected]
http://prdlxvm0001.codify.net/mailman/listinfo/ozsilverlight

Reply via email to