我有一个MVVM WPF应用程序,其TreeView数据绑定到一个viewmodel类。它本质上是一个文件浏览器。我想添加“添加新文件夹”的功能到层次结构。为了实现所需的功能,我想简单地将Textblock切换为我的datatemplate中的可编辑TextBox。这就是我的datatemplate的样子:
<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,因为树视图是数据绑定的。有任何想法吗?感谢
答案 0 :(得分:3)
向VM对象添加bool IsEditable
属性,并将TextBox
的可见性绑定到(使用转换器将布尔值转换为Visibility
枚举)。这样您就不需要直接操纵TreeViewItem
,只需将数据对象标记为可编辑,它就会自然地流向您的视图。