Изменение отдельного TreeViewItem в WPF TreeView с привязкой к данным без изменения источника данных - PullRequest
1 голос
/ 02 июня 2010

У меня есть приложение 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, поскольку древовидная структура привязана к данным Есть идеи? Спасибо

1 Ответ

3 голосов
/ 02 июня 2010

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

...