2009-06-27 2 views
2

Wie können Sie ein WPF-Element durch eine Art von Namen entfernen? So etw wie:Wie entferne ich ein wpf-Element auf einer Leinwand mit dem Tag-Namen?

// Bar is some kind of usercontrol 
Bar b = new Bar(); 
b.Tag = "someId"; 
theCanvas.Children.Add(b); 

// Later to be removed without having the reference 
theCanvas.Children.RemoveElementWithTag("someId") 

Außer natürlich, RemoveElementWithTag ist kein existierendes Verfahren ...

Antwort

2

nur konnte einige LINQ verwenden:

var child = (from c in theCanvas.Children 
      where "someId".Equals(c.Tag) 
      select c).First(); 
theCanvas.Children.Remove(child); 

Das heißt, ich stark vermute, es ist ein sauberer , besserer Weg, um das zu erreichen, was Sie erreichen wollen.

+0

+1, seit Sie könnten. Ich habe es zuerst gemacht, jetzt benutze ich ein Wörterbuch dafür. Aber gibt es wirklich keine Möglichkeit, ein Element durch ID oder STH zu bekommen? – Peter

+0

Da die Children-Auflistung nur die Unterstützung von IDs oder Referenzen unterstützt, gibt es keine andere Möglichkeit, LINQ/foreach zu verwenden, um das richtige Element zu finden. – chrischu