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
WPF TreeView:隐藏所有叶节点的展开符号_Wpf - Fatal编程技术网

WPF TreeView:隐藏所有叶节点的展开符号

WPF TreeView:隐藏所有叶节点的展开符号,wpf,Wpf,如何在WPF树视图中隐藏叶节点的expand/collpse符号 换句话说:如何使叶节点自动展开 有没有办法用XAML实现这一点 谢谢,我不知道纯XAML解决方案,但是您可以绑定treevieItem的IsExpanded属性,并将叶节点上的此属性默认设置为true(您不必在其他节点上拥有此属性) <Style TargetType="controls:TreeViewItem"> <Setter Property="IsExpanded" Value="{Binding

如何在WPF树视图中隐藏叶节点的expand/collpse符号

换句话说:如何使叶节点自动展开

有没有办法用XAML实现这一点


谢谢,

我不知道纯XAML解决方案,但是您可以绑定
treevieItem
IsExpanded
属性,并将叶节点上的此属性默认设置为true(您不必在其他节点上拥有此属性)

<Style TargetType="controls:TreeViewItem">
   <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"></Setter>
</Style>

将TreeViewItems绑定到ObservableCollection,并将ObservableCollection保留为空。这样,扩展/折叠符号不会显示,因为UI知道没有可扩展的内容。以下是我的一些代码中的相关部分:

XAML:


视图模型:

ObservableCollection<ObjectBaseViewModel> _children;

public ObservableCollection<ObjectBaseViewModel> Children
{
    get
    {
        if (_children == null)
            _children = new ObservableCollection<ViewModel>();

        return _children;
    }
}
observedcollection\u儿童;
公众观察收集儿童
{
得到
{
if(_children==null)
_children=新的ObservableCollection();
返回儿童;
}
}

与其他答案类似,展开您可以使用的所有节点

<TreeView >
    <TreeView.ItemContainerStyle>
        <Style TargetType="{x:Type TreeViewItem}">
            <Setter Property="IsExpanded" Value="True" />
        </Style>
    </TreeView.ItemContainerStyle>

这将使所有TreeViewItem自动展开。但是,您仍然会看到展开/折叠切换按钮。要摆脱该按钮,您必须像这样重新设置TreeViewItem的模板

<TreeView ...
          ItemContainerStyle="{StaticResource TreeViewItemExpandedStyle}">

和样式(差不多是Xaml)


首先设置IsExpanded为true

   <Style x:Key="{x:Type TreeViewItem}"
TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded"
    Value="True" />

然后隐藏扩展器

<Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TreeViewItem}">
 <ControlTemplate.Triggers>
     <Trigger Property="HasItems"
         Value="false">
         <Setter TargetName="Expander"
            Property="Visibility"
            Value="Hidden" />
     </Trigger>
     <Trigger Property="HasItems"
              Value="true">
         <Setter TargetName="Expander"
             Property="Visibility"
             Value="Hidden" />
     </Trigger>
                   </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

使用treeview而不是带有rowdetails的datagrid的一个很好的理由是,向上和向下箭头键可以无缝地从展开的细节遍历到标题细节

   <Style x:Key="{x:Type TreeViewItem}"
TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded"
    Value="True" />
<Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TreeViewItem}">
 <ControlTemplate.Triggers>
     <Trigger Property="HasItems"
         Value="false">
         <Setter TargetName="Expander"
            Property="Visibility"
            Value="Hidden" />
     </Trigger>
     <Trigger Property="HasItems"
              Value="true">
         <Setter TargetName="Expander"
             Property="Visibility"
             Value="Hidden" />
     </Trigger>
                   </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>