我有一个包含 TreeView 控件的用户控件。我想根据TreeViewUserControl 类的依赖属性的值来设置's中使用**binding**
的Text
属性的值。TextBlock
TreeView
ItemTemplate
NodeDisplayProperty
我尝试了类似于下面显示的内容(但为 设置了正确的数据上下文NodeDisplayProperty
),但它不起作用,因为拒绝“双重绑定”的Text
属性。TextBlock
的属性DisplayMemberPath
也TreeView
无法设置,因为我使用的是项目模板。
任何不涉及编写新绑定类的建议?理想情况下,我想要一个 XAML 解决方案,但如果您在后面的代码中执行此操作,您如何访问 XAML 定义的项目模板中代码块的绑定?
编辑:树中显示的项目来自模型,因此它们对 UI 元素不可见。
谢谢!
<UserControl x:Class="TreeViewUserControl">
<Grid>
<TreeView ItemsSource="{Binding Path=Hierarchy}" HorizontalAlignment="Stretch" Name="treeHierarchy" SelectedItemChanged="treeHierarchySelectedItemChanged" >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Nodes}">
<!-- Here --- --> <TextBlock Text="{Binding Path={Binding NodeDisplayProperty}}" VerticalAlignment="Center" FontSize="13" >
<TextBlock.ContextMenu>
<ContextMenu>
<MenuItem Command="userControls:Commands.RemoveNode">
</MenuItem>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Style.Triggers>
<!-- ... -->
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
</Grid>
</UserControl>