我正在使用WPF / MVVM来愚弄树视图控件
<TreeView HorizontalAlignment="Left"
Height="319"
VerticalAlignment="Top"
Width="517"
ItemsSource="{Binding Tree}"
>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<StackPanel Orientation="Horizontal">
<Button Width="100" Height="20" IsEnabled="{Binding IsEnabled}" Content="{Binding Name}" />
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
这是我的视图模型,带有节点类
public partial class MainWindow : Window
{
class TreeNode
{
public string Name { get; set; }
public bool IsEnabled { get; set; }
public List<TreeNode> Children { get; set; }
public TreeNode()
{
Children = new List<TreeNode>();
IsEnabled = true;
}
}
class ViewModel
{
public List<TreeNode> Tree { get; private set; }
public ViewModel()
{
Tree = new List<TreeNode>();
}
}
public MainWindow()
{
InitializeComponent();
var viewModel = new ViewModel
{
Tree =
{
new TreeNode
{
Name = "Root 1",
IsEnabled = false,
Children = {
new TreeNode { Name = "Child 1" },
new TreeNode { Name = "Child 2" },
new TreeNode { Name = "Child 3",
Children =
{
new TreeNode { Name = "Child 3-1" },
new TreeNode { Name = "Child 3-2" },
new TreeNode { Name = "Child 3-3" },
}
},
}
}
}
};
DataContext = viewModel;
}
}
正如您所看到的,我将属性“IsEnabled”绑定到按钮,这一切都很好,但实际上我想将“IsEnabled”属性绑定到实际的根节点元素,而不是节点中的对象。 / p>
根据此属性值禁用整个根节点需要做什么?
答案 0 :(得分:0)
为此,您实际上需要影响ItemContainerStyle
的{{1}}。这将为为树的每个节点生成的ItemContainer(TreeView
)设置样式。
TreeViewItem