В настоящее время у меня есть класс 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;
Они привязаны к TreeView в файле XAML.
<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 и редактирую их для настройки данных. Проблема, с которой я столкнулся, заключается в том, что если я изменяю элемент (обновляю значение Name) в finallist, элемент cmdlist также обновляется. , что я не уверен, как решить эту проблему.
Я попытался переместить ResourceDictionary в каждый TreeView конкретно, но все еще сталкивался с той же проблемой.