Изменение отдельного TreeViewItem в WPF TreeView с привязкой к данным без изменения источника данных

У меня есть приложение MVVM WPF с привязкой данных TreeView к классу модели представления. По сути, это файловый менеджер. Я хочу добавить в иерархию возможность "Добавить новую папку". Чтобы достичь желаемой функциональности, я пытаюсь просто переключить текстовый блок на редактируемый текстовый блок в моем шаблоне данных. Вот как выглядит мой шаблон данных:

<TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                <StackPanel Name="tv_itempanel"
                            Orientation="Horizontal" 
                            Margin="2">
                    <Image Source="{Binding Icon}" Margin="4"/>
                    <TextBlock Name="treeitem_tblock" Margin="4" Text="{Binding Name}"/>
                    <TextBox Width="200" Visibility="Collapsed" Name="treeitem_tbox"/>
                </StackPanel>
            </HierarchicalDataTemplate>
</TreeView.ItemTemplate>

Проблема в том, что я не могу изменить отдельный TreeViewItem, так как древовидная структура привязана к данным. Любые идеи? Спасибо


person Seabass__    schedule 02.06.2010    source источник


Ответы (1)


Добавьте свойство bool IsEditable к своим объектам VM и привяжите видимость TextBox к is (используя преобразователь для преобразования логического значения в перечисление Visibility). Таким образом, вам не нужно напрямую манипулировать TreeViewItem, просто пометьте объект данных как редактируемый, и он будет естественным образом отображаться в вашем представлении.

person Aviad P.    schedule 02.06.2010
comment
Спасибо, друг рассказал мне об этом методе всего несколько минут назад. Он отлично работает для того, что я пытаюсь сделать. - person Seabass__; 03.06.2010