я реализовал модель дерева, как это:WPF TreeView обновления, когда источник обновления для модели дерева
public class Node
{
public NodeValue Item { get; set; }
public Node Parent { get; set; }
public List<Node> Children { get; set; }
}
И я показал эти узлы в WPF TreeView.
<TreeView Name="MainTreeview" HorizontalAlignment="Left" Height="auto" VerticalAlignment="Top" Width="200" ItemsSource="{Binding UpdateSourceTrigger=PropertyChanged}" SelectedItemChanged="MainTreeview_SelectedItemChanged" >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local2:Node}" ItemsSource="{Binding Path=Children, Mode=OneWay}">
<TreeViewItem Header="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
Моя проблема в том, что я не могу обновить представление после обновления модели. Я не понимаю из других статей, как обновлять пользовательский интерфейс, потому что они слишком сложны. Теперь я знаю, что есть 2 возможных пути:
Использование свойств зависимостей: Я понял, как они работают, но я не знаю, как применить их к моей модели.
Использование триггеров событий, но я также не знаю, как применить их к моей проблеме.
Пожалуйста, помогите!
Чтобы сделать реализацию этого еще проще, получить [PropertyChanged от Fody] (https://github.com/Fody/PropertyChanged) (также доступны через NuGet) и добавить '[PropertyChanged.ImplementPropertyChanged]' перед определением вашего класса ('public class Node()') – DdW