如何使用一个TreeView作为绑定源其他控件
考虑一个任务等级:如何使用一个TreeView作为绑定源其他控件
TaskID
ParentID
Title
<several other properties>
Description
SubTasks <-- a collection of tasks
首先我填充叫AllTasks任务的层次结构,然后将其加载到TreeView控件:
TaskTree.DataContext = AllTasks
工作正常。现在,我想在用户从TreeView单击任务时使用任务数据填充其他几个控件。我只会考虑说明属性,因为这足以说明问题。
我的树视图的定义如下:
<TreeView
x:Name="TaskTree"
SelectedValuePath="Task">
<TreeView ItemsSource="{Binding}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=SubTasks}">
<TextBlock Text="{Binding Path=Title}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</TreeView>
应显示由用户选择的任务的说明属性文本框被定义为:
<DockPanel
DataContext="{Binding ElementName=TaskTree}">
<TextBox
x:Name="txtDescription"
Text="{Binding Path=SelectedItem.Discussion}"
</DockPanel>
什么也不表示在向上文本框。我尝试设置....
Text="{Binding Path=Discussion}"
...但那也行不通。我尝试了其他组合,但无济于事。什么工作?
您不会在名为“TaskTree”的外部TreeView
中选择任何Task
。卸下外一个:
<TreeView ItemsSource="{Binding}" x:Name="TaskTree">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Task}" ItemsSource="{Binding Path=SubTasks}">
<TextBlock Text="{Binding Path=Title}" />
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
...然后尝试绑定到其SelectedItem
属性:
<TextBox x:Name="txtDescription" Text="{Binding Path=SelectedItem.Discussion, ElementName=TaskTree}" />
我知道,我盯着那个XAML HOURS,从来没有注意到我在另一个树视图中有一个树视图。当然这不正确。我的脸有多红。所以我所要做的只是删除第二个“
我注意到我刚刚在我的代码中删除了我错过了要告诉你他他 – Ramankingdom
@SezMe:请记住投票给有帮助的答案:https://stackoverflow.com/help/someone-answers – mm8
你应该实施一个视图模型。请参阅MVVM。 – dymanoid