Search code examples
c#linqchildrenuielementcollection

How to select a child from an UIElementCollection where a property = some value?


I have a UniformGrid with a number of Button's as Children. Each Button has a Tag with an ID, e.g. (dumbed down code):

MyUniformGrid.Children.Add(new Button {
    Margin  = new Thickness(5),
    Tag     = Query.GetUInt32("id"),
    Width   = 200
});

How can I select the child Button object with an ID of 87? (as a for instance)

Intellisense isn't popping up with the Linq methods when I type MyUniformGrid.Children. (after adding using System.Linq;).


Solution

  • Here you go:

    var MyButton = MyUniformGrid.Children.
                   OfType<Button>().
                   Single(Child => Child.Tag != null && Child.Tag == 87);
    

    Linq can't be run directly on MyUniformGrid.Children since UIElementCollection implements IEnumerable, not IEnumerable<T>. Therefore OfType<Button> is required.