我目前有一个class myCommand
class myCommand : INotifyCollectionChanged , INotifyPropertyChanged
{
public string Name { get; set; }
public ObservableCollection<myFile> subCommand { get; set; }
}
我的窗口中有两个TreeView项。tvCommandList包含所有可用命令,而tvFinalList包含所有选定命令。
我使用contextmenu将项目从tvCommandList复制到tvFinalList;在mainWindow中,我有两个ObservableCollection项,它们绑定到TreeViewItems。
ObservableCollection<myCommand> cmdlist = null;
ObservableCollection<myCommand> finallist = null;
这些绑定到XAML文件中的TreeView。
<Grid>
<Grid.Resources>
<ResourceDictionary>
<Style x:Key="styleTemplate" TargetType="TreeViewItem">
<Setter Property="IsSelected" Value="{Binding IsInitiallySelected, Mode=TwoWay}" />
</Style>
<HierarchicalDataTemplate DataType="{x:Type data:myCommand}"
ItemsSource="{Binding subCommand, Mode=TwoWay}">
<TextBlock Text="{Binding Name, Mode=TwoWay}" />
</HierarchicalDataTemplate>
</ResourceDictionary>
</Grid.Resources>
</Grid>
<TreeView x:Name="tvSendList" ItemsSource="{Binding}" DataContext="{Binding cmdlist}">
<TreeView x:Name="tvRecvList" ItemsSource="{Binding}" DataContext="{Binding finallist}">
我将TreeViewItem从cmdlist复制到finallist,并对其进行编辑以获取海关数据。我在这里面临的问题是,如果我修改finallist中的一项(更新Name值),则cmdlist项也会得到更新,这我不确定该如何解决。
我尝试将ResourceDictionary专门移到每个TreeView,但仍然面临相同的问题
这是因为您的两个集合对象是引用类型。您需要将这些收集对象用作值类型。