У меня есть TreeView, реализованный в WPF, который связан с некоторыми данными XML через класс XElement.При загрузке файла XML в первый раз привязка работает нормально.Все данные заполняют дерево, как и ожидалось.Проблема возникает, когда я добавляю и удаляю элементы, потому что в TreeView ничего не происходит.Теперь я уже делал это раньше », и я думаю, что помню, что мне не нужно было выполнять какую-либо дополнительную работу для этой работы правильно.По крайней мере, для простого случая добавления и удаления элементов из дерева.Я помню, как был удивлен, что это работало без каких-либо дополнительных усилий по написанию кода.У меня больше нет доступа к этому коду, поэтому я не могу просто посмотреть, что я уже сделал.Поэтому я немного озадачен тем, почему я не могу заставить это работать сейчас.
Мой код WPF выглядит следующим образом.
<Window.Resources>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Elements}" x:Key="ViewEditTreeTemplate">
<StackPanel Orientation="Horizontal" Margin="2">
<Label x:Name="ElementHeaderLabel" Padding="1" VerticalContentAlignment="Center" FontSize="16" Content="{Binding Path=DisplayName}" />
</StackPanel>
</HierarchicalDataTemplate>
</Window.Resources>
<Grid>
<TreeView Name="DataTree" ItemTemplate ="{Binding Source={StaticResource ViewEditTreeTemplate}}" Margin="0,0,0,53" />
</Grid>
Я прилагаю свой документ XML вкод позади следующим.Имейте в виду, что это, кажется, работает, поскольку дерево автоматически заполняется информацией из данных XML просто отлично.
XElement NewElement = new XElement(XElement.Load(FilePath));
List<XElement> TempList = new List<XElement>();
TempList.Add(NewElement);
DataTree.ItemsSource = TempList;
В коде, когда я добавляю или удаляю элементы, я делаю следующее:
// When removing an element
Element.Remove(); //Element is of type XElement
// When adding an element
ParentElement.Add(NewElement); //ParentElement and NewElement are of type XElement
У меня такое сильное чувство, что когда я делал это раньше, мне фактически не нужно было делать ничего особенного.Подпрограммы .Remove () и .Add () каким-то образом уведомили привязки, что элементы в .Elements () изменились, и экран обновился автоматически.В любом случае, на этот раз не работает.Кто-нибудь знает почему?