0
的財產我有一個樹視圖模板這樣的:更改樹視圖中選擇項目
<HierarchicalDataTemplate DataType="{x:Type data:Category}" ItemsSource="{Binding Path=Products}">
<TextBlock Text="{Binding Path=CategoryName}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type data:Product}">
<StackPanel>
<StackPanel.ContextMenu>
<ContextMenu>
<MenuItem Header="Add To Project" Click="MenuItem_OnClick"/>
</ContextMenu>
</StackPanel.ContextMenu>
<TextBlock Text="{Binding Path=ModelName}" />
</StackPanel>
</HierarchicalDataTemplate>
,我試圖到TreeView項目添加到鏈表:當我運行上面的
LinkedList<Product> dll = new LinkedList<Product>();
private void MenuItem_OnClick(object sender, RoutedEventArgs e)
{
var itemToAdd = this.tv_Project.SelectedItem as Product;
Product previous = dll.ElementAt(dll.Count - 1);
if(itemToAdd.CategoryID == 1)
{
dll.AddLast(ItemToAdd);
}
else if(itemToAdd.CategoryID == 2)
{
itemToAdd.ProductValue = previous.ProductValue + 1;
}
...
}
現在代碼,我發現如果previous
(我上次添加到鏈表)和itemToAdd
(我將添加到鏈表的這一次)是相同的,它會更改previous
和itemToAdd
的屬性ProductValue
,此時t他的代碼執行:
itemToAdd.ProductValue = previous.ProductValue + 1;
那麼我應該如何解決這個問題?提前致謝!
LinkedList包含*引用*到產品對象。因此,如果兩個引用引用同一個對象,則可以使用這些引用中的任何一個來更改此對象。 – mm8
@ mm8感謝您的回覆。我相信是這樣。我也試過'Array',它有同樣的問題。那麼,如果我想實現這個目標,我該怎麼辦? – user8595258
我不明白你的代碼應該做什麼以及你試圖完成什麼。而使用數組而不是LinkedList完全沒有區別。你仍然存儲引用。 – mm8