Изменение иконки в TreeViewItem

215
08 октября 2018, 01:00

Имеется обычный TreeView. При нажатии правой кнопкой мыши по treeviewitem вылезает меню (добавляет/удаляет запись в/из коллекции). После завершения работы приложения, оно загружает эту коллекцию в xml файл и выгружает его назад при следующем запуске. Так вот, как сделать так, что бы при выполнении этих событий менялась иконка у TreeViewItem? Пробовал сделать через EventTrigger, но не зашло.

И можно ли сделать так, что бы при запуске приложения, все те объекты, которые были сохранены в xml файле снова были отмечены?

P.S. Может есть другой вариант решения этой задачи?

Само дерево.

<TreeView Name="tree" Grid.Column="0" Grid.Row="0" Grid.RowSpan="3" Margin="5,60,100,10">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding  collection}">
        <StackPanel Orientation="Horizontal">
            <Image>
                <Image.Style>
                    <Style BasedOn="{StaticResource FolderWithFilesIcon}" TargetType="Image">
                        <Setter Property="Source" Value="{Binding Source={StaticResource folder}, Mode=OneTime}"/>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=TreeViewItem},                                Path=IsSelected}" Value="True">
                                    <Setter Property="Source" Value="{Binding Source={StaticResource isSelected}, Mode=OneTime}"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Image.Style>
                </Image>
                <TextBlock Text="{Binding Name}" Style="{StaticResource txtBlockForTreeView}"/>
                    <StackPanel.ContextMenu>
                        <ContextMenu>
                            <MenuItem x:Name="rightClickPatientSelect" Header="{StaticResource m_selectedPatient}" Click="rightClickPatientSelect_Click">
                            </MenuItem>
                            <MenuItem x:Name="rightClickPatientUnSelect"
                            Header="{StaticResource m_unselectedPatient}"                                                          Click="rightClickPatientUnSelect_Click"/>
                        </ContextMenu>
                    </StackPanel.ContextMenu>
                </StackPanel>
                    <HierarchicalDataTemplate.ItemTemplate>
                        <HierarchicalDataTemplate ItemsSource="{Binding collection}">
                            <StackPanel Orientation="Horizontal">
                                <StackPanel.Children>
                                    <Image Source="Resources/folder_plus.png" Width="25" Height="25"/>
                                    <TextBlock Text="{Binding Name}" Style="{StaticResource txtBlockForTreeView}" Height="20"/>
                                </StackPanel.Children>
                                    <StackPanel.ContextMenu>
                                        <ContextMenu>
                                            <MenuItem x:Name="rightClickSelect"  Header="{StaticResource m_conntextMenuSelect}"                                     Click="rightClickSelect_Click">                                                            
                                                <MenuItem.Icon>
                                                    <Image Source="Resources/insertRecord.png"/>
                                                </MenuItem.Icon>
                                            </MenuItem>
                                                <MenuItem x:Name="rightClickUnselect"                                               Header="{StaticResource m_conntextMenuUnselect}"                                                                  Click="rightClickUnselect_Click">
                                                    <MenuItem.Icon>
                                                        <Image Source="Resources/minus.png"/>
                                                    </MenuItem.Icon>
                                                </MenuItem>
                                            </ContextMenu>
                                            </StackPanel.ContextMenu>
                                        </StackPanel>
                                    </HierarchicalDataTemplate>
                                </HierarchicalDataTemplate.ItemTemplate>
                            </HierarchicalDataTemplate>
                        </HierarchicalDataTemplate.ItemTemplate>
</TreeView.ItemTemplate>
<TreeView/>
READ ALSO
Как подключить кортежи для C# в MVS17?

Как подключить кортежи для C# в MVS17?

Как подключить кортежи для C# в Visual Studio 17?

184
Чтение файла из архива без распаковки в C#

Чтение файла из архива без распаковки в C#

Мне необходимо читать текстовый файл, что находится в архиве построчноРаспаковывать его на жесткий диск нельзя

214
Обрезка изображения по кругу

Обрезка изображения по кругу

Необходимо реализовать обрезку изображения по кругу с выбором области обрезки по типу, как это сделано, например, тут либо другой способ...

192