WPF 應用程式 .Net 6.0 Visual Studio
CategoryList_Copy.Items.Clear()
Dim newNode As ItemCollection = CType(CategoryList.Items.Clone(), ItemCollection)
CategoryList_Copy.Items.Add(newNode)
我怎樣才能使這項作業?我正在嘗試將一個專案從 TreeView 復制到另一個 TreeView。
我為此使用了一個名為 AnyClone 的 NuGet 包,但我認為我做錯了什么。
我收到此錯誤:
System.MissingMethodException: 'Constructor on type 'System.Windows.Controls.ItemCollection' not found.'
我究竟做錯了什么?
uj5u.com熱心網友回復:
首先,這個錯誤很容易解釋:ItemCollection 沒有帶有 0 個引數的公共建構式。AnyClone 顯然必須實體化它想要克隆的專案,ItemCollection 不支持,至少在不提供引數的情況下是這樣。
但這應該無關緊要,您只是使用了錯誤的方法來復制資料。
ItemCollection 是一個視圖,它 - 從提供的資料系結 - 用作資料和 TreeView 之間的層,因此您可以在不更改資料的情況下應用排序/過濾/分組。如果要將資料從一個TreeView 復制到另一個,不要復制ItemCollection 中的資料,復制ItemsSource 中的資料。
此外,您正在嘗試克隆所有專案,而不僅僅是要復制的專案。即使您解決了上述錯誤:您嘗試復制一個 TreeView 的完整視圖,然后將其作為專案添加到另一個 TreeView,這不是您想要實作的目標。
更簡潔的方法如下:
TreeView應該有一個ItemsSource: 將此 ItemsSource 系結到您希望 TreeView 顯示的資料。確保CategoryList_Copy有一個單獨的集合系結到它的 ItemsSource。復制資料時,只需將值從一個 CategoryList 的 ItemsSource 復制到另一個。在那里您應該能夠輕松使用 AnyClone 的克隆方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/372028.html
上一篇:如何在資料網格視圖中顯示資料
