Ich arbeite an einem Charting-Steuerelement, wo ich den "Analysebereich" grafiere, der nur zwei vertikale Linien auf dem Diagramm ist. Ein Problem tritt auf, wenn ich den Analysebereich ändern möchte, weil ich nicht weiß, wie man nur die zwei Analysebereichslinien entfernt, so dass ich am Ende das Diagramm lösche und die tatsächlichen Datenwerte und was noch einmal anzeige. Gibt es eine Möglichkeit, diese UI-Elemente zu markieren (d. H. Der Analysebereich ist ein gridline-UI-Element), sodass ich sie spezifisch entfernen kann? Ich nehme an, ich könnte den "Index" des UI-Elements irgendwo speichern und löschen, aber ich frage mich, ob es einen saubereren Weg dafür gibt. Danke vielmals.WPF - Gibt es eine Möglichkeit, bestimmte Kinder aus Canvas.Children zu entfernen?
Antwort
Alle UIElement
s haben eine UID, die eine Zeichenfolge ist. Sie könnten die UID der Bereichslinien auf etwas vorhersagbares setzen. Bedenken Sie, dass die UID eindeutig sein muss. Wenn Sie nur die Gitternetzlinien entfernen müssen, durchlaufen Sie die Children-Sammlung und sammeln eine Liste der zu entfernenden Elemente der Benutzeroberfläche, die Sie dann entfernen müssen.
Etwas wie folgt aus:
Canvas c = new Canvas();
c.Children.Add(new UIElement() { Uid = "Line1" });
c.Children.Add(new UIElement() { Uid = "Line2" });
c.Children.Add(new UIElement() { Uid = "Line3" });
c.Children.Add(new UIElement() { Uid = "Text1" }); //This is added as a sample
List<UIElement> itemstoremove = new List<UIElement>();
foreach (UIElement ui in c.Children)
{
if (ui.Uid.StartsWith("Line"))
{
itemstoremove.Add(ui);
}
}
foreach (UIElement ui in itemstoremove)
{
c.Children.Remove(ui);
}
Das sollte funktionieren. Ein schneller Test dieses Codes im Debug zeigt die Children-Zählung bei 1 an, wobei nur die UIElement
mit Uid of Text1 in der Liste vorhanden ist.
Wenn Sie die beiden Zeilen zum Canvas
hinzufügen, können Sie nicht einen Verweis auf die beiden Zeilen halten. Auf diese Weise, wenn Sie sie neu zeichnen müssen, tun Sie einfach Canvas.Children.Remove(line1)
und Canvas.Children.Remove(line2)
. Aktualisieren Sie dann Ihre Referenzen für die Linien und fügen Sie sie erneut dem Canvas-Bereich hinzu. Sie könnten sogar einfach die X- und Y-Werte der Zeilen selbst aktualisieren, anstatt sie zu entfernen und neu hinzuzufügen. Auf diese Weise würde das Diagramm nur die Linien verschieben.
Aber im Grunde ist der Schlüssel, einen Verweis auf die Zeilen nach dem Hinzufügen von ihnen zu der Canvas
beizubehalten.
- 1. Gibt es eine Möglichkeit, bestimmte Elemente aus einer Liste <T> mit LINQ zu entfernen?
- 2. Gibt es eine Möglichkeit, bestimmte UIImageView-Eigenschaften zu erhalten?
- 3. Gibt es eine Möglichkeit, bestimmte Warnungen von einem MSBuild-Lauf zu entfernen?
- 4. Gibt es eine geeignete Möglichkeit, Git-Commits selektiv zu entfernen?
- 5. Gibt es eine Möglichkeit, Bindungen in WPF erneut zu verwenden?
- 6. Gibt es eine Möglichkeit, WPF Routed Events zu sehen?
- 7. Gibt es eine Möglichkeit, Selektoren zu gruppieren?
- 8. XPath: Gibt es eine Möglichkeit, alle Kinder Text in XPath
- 9. Gibt es eine Möglichkeit, unbekannte Ereignislistener von Objekten zu entfernen?
- 10. Gibt es eine Möglichkeit, in RSpec zu entfernen?
- 11. Gibt es eine automatisierte Möglichkeit, XAML-Standardeigenschaften zu entfernen?
- 12. Gibt es eine Möglichkeit GoPro Fisheye zu entfernen ffmpeg mit
- 13. Gibt es eine Möglichkeit, alle Redis Client Connections zu entfernen?
- 14. WCF: Gibt es eine Möglichkeit, ExtensionData-Feld zu entfernen?
- 15. Bessere Möglichkeit, bestimmte Zeichen aus einer Perl-Zeichenfolge zu entfernen
- 16. Gibt es eine Möglichkeit, das "," aus einem Array zu entfernen, wenn es gedruckt wird?
- 17. Gibt es eine Möglichkeit, eine bestimmte Spalte in einem DataGrid zu verbergen, wenn AutoGenerateColumns = True?
- 18. WPF - Gibt es eine Möglichkeit, eine Bindung programmatisch auszuwerten?
- 19. Gibt es eine Möglichkeit, eine WPF-Datagrid NewItem Platzhalter stylen
- 20. Gibt es eine Möglichkeit, eine bereits geschlossene WPF-Fensterinstanz wiederzuverwenden
- 21. Gibt es eine Möglichkeit, UseLayoutRounding in WPF mit. Net 3.5
- 22. Gibt es eine Möglichkeit, ConfigurationManager.AppSettings zu überschreiben?
- 23. Gibt es eine Möglichkeit, bestimmte PartionKeys aus einer Tabelle zu erhalten
- 24. Gibt es eine Möglichkeit, Dateien aus C++ zu unterscheiden?
- 25. WPF Grid - align es Kinder automatisch
- 26. Gibt es eine Möglichkeit, Kovarianz zu deklarieren?
- 27. Gibt es eine Möglichkeit, Mehrfacheinspritzung zu propagieren?
- 28. Gibt es eine Möglichkeit, eine Methode zu erzwingen, bestimmte Methodensignatur zu folgen?
- 29. Gibt es eine Möglichkeit, zu einer Liste von Doubles für die Bearbeitung in WPF zu binden?
- 30. Gibt es eine einfache Möglichkeit, ColdFusion-Kommentare aus einer Datei zu entfernen?