在我的程序中,我有一个treeView
我想要允许comboBoxes
和textBlocks
的子节点。我的treeView
及其节点以MVVM样式创建。我知道如何创建textBlock
子节点,但从未创建任何其他UI工具的子节点。
我的treeview's
xaml:
TreeView ItemsSource="{Binding UserControl_DataModel.TreeViewViewModel.ObservableCollection<TreeViewDataModel>}" DisplayMemberPath="DisplayName.Value".../>
这是创建新节点并添加到TreeView
(TreeViewViewModel)的地方:
private TreeViewDataModel createNewNode(string nodeName)
{
var newNode = new TreeViewDataModel ()
{
DisplayName = nodeName
};
newNode.Children.Add(new TreeViewDataModel () { DisplayName = nodeName});
return newNode;
}
public void addNewLocNode(string nodeName)
{
TreeObservableCollection.Add(createNewNode(nodeName));
}
如何创建ComboBoxes
的子节点,同时仍允许textblock
个孩子?这让我感到困惑,因为我没有看到代码的任何部分,它们指定了孩子们成为什么UI工具。如果您需要查看更多代码,请与我们联系。
(Previous question如果您需要引用它,请约定treeView
。)
更新
为了清楚起见,这就是我的treeView
节点的外观:
当我尝试这样的事情时:
<HierarchicalDataTemplate DataType="{x:Type Data:Node}" ItemsSource="{Binding Teams}">
<StackPanel>
<TextBlock Text="{Binding IndividualProperty}" />
<ComboBox ItemsSource="{Binding CollectionProperty}" />
</StackPanel>
</HierarchicalDataTemplate>
我反而得到了这个设置(就像树的每个项目都带有TextBlock
和ComboBox
。也许还有另外一个选项StackPanel
?):
请注意,comboBox
不是textBlock
节点的子节点,但它更像是与textBlock
节点位于同一级别。
答案 0 :(得分:0)
ComboBox
是一个集合控件。因此,您需要在&#39;节点中使用集合属性。要绑定到ComboBox.ItemsSource
的对象。虽然“节点”中的个人财产属于“节点”。对象可能需要HierarchicalDataTemplate
,有点像这样:
<HierarchicalDataTemplate DataType="{x:Type Data:Node}" ItemsSource="{Binding Teams}">
<TextBlock Text="{Binding IndividualProperty}" />
</HierarchicalDataTemplate>
你还需要一个这样的:
<HierarchicalDataTemplate DataType="{x:Type Data:Node}" ItemsSource="{Binding Teams}">
<ComboBox ItemsSource="{Binding CollectionProperty}" />
</HierarchicalDataTemplate>
或者也许是这样:
<HierarchicalDataTemplate DataType="{x:Type Data:Node}" ItemsSource="{Binding Teams}">
<StackPanel>
<TextBlock Text="{Binding IndividualProperty}" />
<ComboBox ItemsSource="{Binding CollectionProperty}" />
</StackPanel>
</HierarchicalDataTemplate>