我有以下.xaml:
<TreeView ItemsSource="{Binding EntityInstanceGroupings}">
<TreeView.ItemTemplate>
<DataTemplate>
<TreeViewItem ItemsSource="{Binding EntityInstances}">
<TreeViewItem.HeaderTemplate>
<DataTemplate>
<DockPanel LastChildFill="True">
<TextBlock Text="{Binding ...}" />
<Button Content="Add" DockPanel.Dock="Right" VerticalContentAlignment="Top">
...
</Button>
</DockPanel>
</DataTemplate>
</TreeViewItem.HeaderTemplate>
<TreeViewItem.ItemTemplate>
...
</TreeViewItem.ItemTemplate>
</TreeViewItem>
</DataTemplate>
</TreeView.ItemTemplate>
</TreeView>
在这一行:
<TextBlock Text="{Binding ...}" />
我正在尝试绑定到EntityInstanceGroupings视图模型中的属性“GroupName”。我无法想象这样做(如果可能的话)。任何帮助将不胜感激:)
答案 0 :(得分:2)
您应该可以使用RelativeSource
实现此目的。
<TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType=TreeViewItem},
Path=DataContext.GroupName}" />
答案 1 :(得分:0)
如果我可以遵循您的逻辑,那么您的TreeView
会获得 EntityInstance组的列表。 TreeView
的rootNodes是这些组。在TreeView.ItemTemplate
中,您要显示每个组的名称。
在这种情况下,DataContext
和TreeViewItem
的{{1}}也应该是 EntityInstances 组。
这意味着您只需将TextBox
直接设置为道具:
Binding
答案 2 :(得分:0)
虽然我想要做的事情已经实现,但我确实找到了一个更好的解决方案来实现我想要的目标。
<UserControl.Resources>
<HierarchicalDataTemplate x:Key="entityTemplate">
<TextBlock Text="{Binding LayoutName}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="groupingTemplate" ItemsSource="{Binding EntityInstances}" ItemTemplate="{StaticResource entityTemplate}">
<DockPanel LastChildFill="True">
<TextBlock Text="{Binding Name}" FontWeight="Bold"/>
<Button Content="Add" DockPanel.Dock="Right" VerticalContentAlignment="Top">
...
</Button>
</DockPanel>
</HierarchicalDataTemplate>
</UserControl.Resources>
<!-- Instantiate the TreeView control -->
<TreeView ItemsSource="{Binding EntityInstanceGroupings}" ItemTemplate="{StaticResource groupingTemplate}" />