Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
Wpf 从HierachicalDataTemplate绑定到TreeView的DataContext_Wpf_Xaml_Data Binding_Hierarchicaldatatemplate_Relativesource - Fatal编程技术网

Wpf 从HierachicalDataTemplate绑定到TreeView的DataContext

Wpf 从HierachicalDataTemplate绑定到TreeView的DataContext,wpf,xaml,data-binding,hierarchicaldatatemplate,relativesource,Wpf,Xaml,Data Binding,Hierarchicaldatatemplate,Relativesource,我有一个树视图,其中包含由HierarchycalDataTemplate填充的项。我试图从HierarchycalDataTemplate内部访问TreeView的DataContext中的属性。有人能帮忙吗?以下是我在HierarchycalDataTemplate中尝试的内容: <HierarchicalDataTemplate x:Key="MyTopLevel" ItemTemplate="{StaticReso

我有一个树视图,其中包含由HierarchycalDataTemplate填充的项。我试图从HierarchycalDataTemplate内部访问TreeView的DataContext中的属性。有人能帮忙吗?以下是我在HierarchycalDataTemplate中尝试的内容:

<HierarchicalDataTemplate x:Key="MyTopLevel"
                                  ItemTemplate="{StaticResource LowerLevelTemplate}"
                                  ItemsSource="{Binding LowerLevel}">
    <TextBlock Text="{Binding Name, Mode=OneWay}" ToolTip="{Binding Name, Mode=OneWay}">
       <TextBlock.ContextMenu>
            <ContextMenu x:Name="MyContextMenu">    
                <MenuItem Header="{Binding DataContext.Test, RelativeSource={RelativeSource AncestorType={x:Type TreeView}}}" />
            </ContextMenu>
        </TextBlock.ContextMenu>
    </TextBlock>
</HierarchicalDataTemplate>

您可以使用TextBlock的标记引用TreeView的DataContext,然后通过
PlacementTarget
使用相对源绑定在ContextMenu中获取它,例如:

<TextBlock Text="{Binding Name, Mode=OneWay}" Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=TreeView}}">
    <TextBlock.ContextMenu>
        <ContextMenu DataContext="{Binding PlacementTarget.Tag, RelativeSource={RelativeSource Self}}">
            <MenuItem Header="{Binding Test}"/>
        </ContextMenu>
    </TextBlock.ContextMenu>
</TextBlock>

如果要保留上下文菜单的原始DataContext,可以使用完整路径绑定直接导航到属性,例如:

<TextBlock Text="{Binding Name, Mode=OneWay}" Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=TreeView}}">
    <TextBlock.ContextMenu>
        <ContextMenu>
            <MenuItem Header="{Binding PlacementTarget.Tag.Test, RelativeSource={RelativeSource AncestorType=ContextMenu}}"/>
        </ContextMenu>
    </TextBlock.ContextMenu>
</TextBlock>