我正在繪製圖表控件,我正在繪製「分析範圍」,它只是圖表上的兩條垂直線。當我想更改分析範圍時會出現問題,因爲我不知道如何只刪除兩條分析範圍線,因此我最終清除了圖表並繪製了實際的數據值以及其他值。有沒有一種方法來標記這些UI元素(即分析範圍是網格線UI元素),以便我可以專門刪除它們?我想我可以將UI元素的「索引」保存在某處並刪除這些元素,但我想知道是否有更簡單的方法來完成此操作。非常感謝。WPF - 有沒有辦法從Canvas.Children中刪除特定的孩子?
2
A
回答
2
所有UIElement
s都有一個UID,它是一個字符串。您可以將範圍線的UID設置爲可預測的內容。請記住,UID必須是唯一的。然後,當您只需要刪除網格線時,您將遍歷Children集合,收集需要刪除的UI元素列表,然後將其刪除。
事情是這樣的:
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);
}
這應該工作。在調試中對此代碼進行的快速測試顯示兒童數爲1,列表中僅顯示帶有Uid of Text1的UIElement
。
1
當您將兩條線添加到Canvas
時,您不能持有對這兩條線的引用。這樣,當您需要重新繪製它們時,只需執行Canvas.Children.Remove(line1)
和Canvas.Children.Remove(line2)
即可。然後更新你的參考線並重新添加到畫布。你甚至可以更新這些行的X和Y值,而不是刪除和重新添加它們。這樣,圖表就會移動線條。
但是,基本上關鍵是在將它們添加到Canvas
後保持對這些行的引用。
相關問題
- 1. 有沒有辦法將孩子插入特定的位置?
- 2. 有沒有辦法從Scala中的實例中刪除特質?
- 3. 有沒有辦法在2d數組中刪除特定的行?
- 4. 無法刪除元素的所有孩子與特定類
- 5. NSManagedObjectContext子/父 - 孩子沒有刪除registeredObjects
- 6. 刪除孩子沒有工作
- 7. 有沒有辦法使用python從句子中刪除專有名詞?
- 8. 刪除孩子,但只刪除沒有孩子的父記錄。sql server 2008
- 9. 有沒有辦法刪除FILE_FLAG_DELETE_ON_CLOSE?
- 10. 如何在SQL中刪除所有沒有孩子的父母?
- 11. 有沒有辦法從文本文件中刪除特殊字符?
- 12. 有沒有辦法在特定日期之前刪除所有Facebook牆貼?
- 13. 有沒有辦法從CSS規則中刪除屬性?
- 14. 有沒有辦法從UISearchDisplayController中刪除「No Results」標籤?
- 15. 有沒有辦法從StreamReader中刪除第一行
- 16. 有沒有辦法從一個數據庫中刪除'sysmessages'表?
- 17. EventKit:有沒有什麼辦法從EKEventEditViewController中刪除受邀者
- 18. 有沒有辦法從UITableView中刪除分隔線?
- 19. JPA如何刪除沒有刪除孩子的父母?
- 20. 有沒有辦法從epydoc生成中排除特定的文件?
- 21. 有沒有辦法從Espresso Recorder啓動特定的活動?
- 22. 有沒有辦法在jQuery中刪除所有名稱空間的綁定?
- 23. 有沒有什麼辦法從UINavigationController的堆棧中刪除特定的視圖控制器?
- 24. 有沒有辦法從TableLayoutPanel的一行中刪除所有控件?
- 25. 有沒有辦法從特定的國家檢索活動,頁面或帖子?
- 26. 刪除在JavaScript中沒有ID的孩子
- 27. 有沒有辦法刪除hbase系統中的標籤?
- 28. 有沒有辦法刪除C宏中的引號?
- 29. 有沒有辦法只刪除xcode中禁用的斷點?
- 30. 有沒有辦法在mysql中做批量/更快的刪除?