Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net TreeView-动态更改textblock的文本绑定(项目模板的一部分)_.net_Wpf_Xaml_Wpf Controls - Fatal编程技术网

.net TreeView-动态更改textblock的文本绑定(项目模板的一部分)

.net TreeView-动态更改textblock的文本绑定(项目模板的一部分),.net,wpf,xaml,wpf-controls,.net,Wpf,Xaml,Wpf Controls,我有一个包含TreeView控件的用户控件。 我想根据TreeViewSerControl类中名为NodeDisplayProperty的依赖属性的值,设置TreeView的ItemTemplate中使用的TextBlock的Text属性的**绑定** 我尝试了与下面所示类似的方法(但是为NodeDisplayProperty设置了正确的数据上下文),但是它不起作用,因为TextBlock的Text属性拒绝“双重绑定” TreeView的属性DisplayMemberPath也无法设置,因为我正

我有一个包含TreeView控件的用户控件。 我想根据TreeViewSerControl类中名为
NodeDisplayProperty
的依赖属性的值,设置
TreeView
ItemTemplate
中使用的
TextBlock
Text
属性的
**绑定**

我尝试了与下面所示类似的方法(但是为
NodeDisplayProperty
设置了正确的数据上下文),但是它不起作用,因为
TextBlock
Text
属性拒绝“双重绑定”

TreeView
的属性
DisplayMemberPath
也无法设置,因为我正在使用项目模板

有没有不涉及编写新绑定类的建议? 理想情况下,我想要一个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>


为什么不直接公开应该显示的内容,而不是返回包含该内容的属性的名称?绑定的属性的名称取决于用户通过UI选择的选项。正如我所说,您可以拥有一个直接返回值的属性。如何实现这一点取决于用户选择的级别。例如,如果它位于整个树的顶层,则每个项目都需要能够查找它,然后返回相关值。显示的项目属于模型类,因此它们在UI类型上没有可见性。问题更新:)这没关系,我不是说UI,而是说代表整个树和项目的类。如果没有树的类,只有无关紧要的节点,那么节点只需要知道用户选择了什么,如果不是节点本身,这些信息应该在某些模型中。