首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在TreeView中获取TreeViewItem的可用(可见)宽度

在TreeView中获取TreeViewItem的可用(可见)宽度,可以通过以下方法:

  1. 使用ActualWidth属性:

ActualWidth属性表示TreeViewItem的实际宽度,可以通过以下代码获取:

代码语言:csharp
复制
TreeViewItem item = (TreeViewItem)treeView.ItemContainerGenerator.ContainerFromItem(itemDataContext);
double actualWidth = item.ActualWidth;
  1. 使用VisualTreeHelper类:

VisualTreeHelper类可以帮助我们获取TreeViewItem的可用宽度。以下是一个示例代码:

代码语言:csharp
复制
TreeViewItem item = (TreeViewItem)treeView.ItemContainerGenerator.ContainerFromItem(itemDataContext);
FrameworkElement element = VisualTreeHelper.GetChild(item, 0) as FrameworkElement;
double availableWidth = element.ActualWidth - element.Margin.Left - element.Margin.Right;
  1. 使用TreeViewItem的Header属性:

TreeViewItem的Header属性表示TreeViewItem的内容,可以通过以下代码获取:

代码语言:csharp
复制
TreeViewItem item = (TreeViewItem)treeView.ItemContainerGenerator.ContainerFromItem(itemDataContext);
FrameworkElement header = item.Header as FrameworkElement;
double availableWidth = header.ActualWidth - header.Margin.Left - header.Margin.Right;
  1. 使用TreeViewItem的Template属性:

TreeViewItem的Template属性表示TreeViewItem的模板,可以通过以下代码获取:

代码语言:csharp
复制
TreeViewItem item = (TreeViewItem)treeView.ItemContainerGenerator.ContainerFromItem(itemDataContext);
ControlTemplate template = item.Template as ControlTemplate;
FrameworkElement element = template.FindName("PART_Header", item) as FrameworkElement;
double availableWidth = element.ActualWidth - element.Margin.Left - element.Margin.Right;

以上是四种获取TreeViewItem可用宽度的方法,可以根据实际情况选择合适的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在onCreate获取View高度和宽度

何在onCreate获取View高度和宽度 在开发过程中经常需要获取到View宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。...然而新手们经常在onCreate方法中直接调用上面两个方法得到值是0! 这是为什么呢? 因为View绘制是通过两个遍历来完成,一个measure过程,一个layout过程。...而这一切是发生在onCreate方法之后。所以在onCreate中直接使用View.getWidth()和View.getHeight()是无法得到正确。...那应该怎么onCreate获取View宽高呢?...开发者可以通过View.post()方法来获取到View宽高,该方法传递一个Runnable参数,然后将其添加到消息队列,最后在UI线程执行。

5.3K20

【愚公系列】2023年10月 WPF控件专题 TreeView控件详解

原生控件是由Microsoft提供内置控件,Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见标准用户界面元素。...一、TreeView控件详解WPFTreeView控件是用于显示分层数据结构控件,通常用于展示树形结构。...TreeView控件基本用法如下:在XAML添加TreeView控件:添加根节点和子节点: e){ // 获取选中节点 var selectedItem = treeView.SelectedItem as TreeViewItem; ...}1.属性介绍WPFTreeView...2.常用场景WPFTreeView控件常用场景有:文件和文件夹结构展示——TreeView控件可以很好展示文件和文件夹层级结构,这对于文件管理和文档管理应用程序非常有用。

76600
  • 【翻译】WPF 附加行为介绍 Introduction to Attached Behaviors in WPF

    解释附加行为概念并展示如何在 MVVM 模式上下文中使用它们。...本文解释了什么是附加行为,以及您如何在 WPF 应用程序实现它们。本文读者需要稍微熟悉 WPF、XAML、附加属性、以及 MVVM 模式。...我们可以创建一个 TreeViewItem 子类,该类拥有当被选中时将自己带到视野内建支持,但是,在 WPF 世界,这肯定就是杀鸡用牛刀了。...我做了些修改,例如,往 TreeView 添加了更多项,增大了字体大小,添加了附加行为。附加行为在一个叫做 TreeViewItemBehavior 静态类。...这个披萨最后一块就是看看 TreeViewItemBehavior 类如何获得 TreeView 每个 TreeViewItem

    1.5K10

    精通 WPF UI Virtualization

    本篇博客主要说明如何使用 UI Virtualization(以下简称为 UIV) 来提升 OEA 框架 TreeGrid 控件性能,同时,给出了一些学习 UIV 资源。...解决方案      其实,相关 UIV 知识点有那么几个: WPF VirtualizingStackPanel 只支持一层数据 UIV。...WPF3.5 SP1 以前 TreeView 是不支持 UIV。而之后 TreeView 在默认情况下 UIV 处于关闭状态,需要手动打开。...》、《Problem: ListView Virtualization》 《Virtualizing TreeViewItem》:其中最佳答案说到几个知识点:VirtualizingStackPanel...MS 自己相关资源: 《MSDN Control Performance》、《How to: Find a TreeViewItem in a TreeView》(如何在 UIV 情况下找到控件)、

    2.4K90

    技术总结:自动扩张WPF树型表格列宽

    一开始时候,要解决这个问题,想到最直接方案是这样:找到第一列Expander控件(加号: ),然后监听它“Expanded”事件;在事件处理程序,计算所需要宽度,然后设置为控件宽度。...我先在TreeListViewOnExpanded事件处理程序尝试编写代码获取每一个TreeListView,但是发现这个事件在发生时,所有的子节点并没有生成,所以不能通过ItemContainerGenerator.GetContainerForItem...方法获取到窗口,此方案失败。...,才会触发调整宽度代码。    ...其中学到了以下内容: 熟悉了TreeViewTreeViewItem、ItemsControl使用及树型控件原理。 树型表格控件TreeListView设计过程(见之前文章)。

    1.4K50

    WPF中非递归(无后台代码)动态实现TreeView

    在UI界面,树形视图是比较常用表示层级结构方式,WPF中提供了TreeView控件。对于TreeView控件基本使用已经有很多文章。...大都是介绍如何在XAML中使用硬编码固定信息填充Treeview控件,或者是后台代码递归遍历数据源,动态创建TreeView。...这是因为TreeView支持开启虚拟化(默认是关闭,设置 VirtualizingPanel.IsVirtualizing="True"开启虚拟化),渲染界面是不会一次把所有UI元素全部创建好,而是根据屏幕上可见区域计算需要渲染元素个数...例如本例中有100w条数据,可见区能显示20条,TreeView只创建了41个UI元素。为什么不是创建20个呢?这是由于为了确保良好滚动性能,实际会多创建一些UI元素。...TreeView 默认关闭虚拟化,是因为早期WPF发布版本VirtualizingStackPanel不支持层次化数据,虽然现在已支持,但是TreeView默认关闭虚拟化确保兼容性。

    32940

    PyQt5-Qt Designer控件尺寸相关设置(sizePolicy策略)

    期望尺寸:图片图片print(f"获取控件textEdit期望尺寸高度:{self.textEdit.sizeHint().height()}")print(f"获取控件textEdit期望尺寸宽度...().height()}")print(f"获取控件pushButton期望尺寸宽度:{self.pushButton.sizeHint().width()}")获取pushButton_2期望尺寸...:图片获取控件textEdit期望尺寸高度:192获取控件textEdit期望尺寸宽度:256获取控件pushButton期望尺寸高度:34获取控件pushButton期望尺寸宽度:47...获取控件pushButton_2期望尺寸高度:34获取控件pushButton_2期望尺寸宽度:47大部分控件最小期望尺寸和期望尺寸是一样获取方法为:self.控件.minimumSize...,主要是来描述可用空间占用比例

    2.5K50

    Qt树形控件QTreeView使用1——节点添加删除操作

    是ui中最常用控件,QtQTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装和MFCCTreeCtrl很类似,没有mvc特点)。...: QStandardItemModel* model = static_cast< QStandardItemModel*>( ui-> treeView-> model...例如把 on_treeView_clicked ( const QModelIndex & index )代码改一下,每点击一条目,无论点击哪里,都能获取“名称”和...所谓可见顶层是目录树可见最顶层父节点,如下图红框所示 QStandardItem * QStandardItemModel::invisibleRootItem()函数并不是得到我们想要这个顶层节点...,它得到是所有节点最终根节点,因此,得到顶层节点需要自己写操作,下面是根据任意一个节点获取可见顶层节点代码: QStandardItem* getTopParent(QStandardItem

    6.1K30

    基于 HTML5 Canvas 工控机柜 U 位动态管理

    首先将场景分为左右两个部分,左边为树,右边是列表和拓扑图组合: treeView = this.treeView = new ht.widget.TreeView(),// 树组件 (http://www.hightopo.com...(treeView, null, 'h', 280);// 分割组件,将场景分为左右两个部分,左边为树组件,右边为空,左边宽度为280,右边组件先设置为空到时候根据具体情况分配 (http://www.hightopo.com...treeView.sm().ms(function(){// 监听选中变化事件 var ld = treeView.sm().ld();// 获取最后选中节点 if (ld) self.updateForm...,// 指定对话框宽度 height: 220,// 指定对话框高度 draggable: true,// 指定对话框是否可拖拽调整位置 closable...这块代码非常简单,只需要对选中类型进行过滤即可: listView.setVisibleFunc(function(data){// 设置可见过滤器 if (!

    2.4K40

    基于 HTML5 工业互联网云平台监控机房 U 位 顶

    首先将场景分为左右两个部分,左边为树,右边是列表和拓扑图组合: treeView = this.treeView = new ht.widget.TreeView(),// 树组件 (http://www.hightopo.com...(treeView, null, 'h', 280);// 分割组件,将场景分为左右两个部分,左边为树组件,右边为空,左边宽度为280,右边组件先设置为空到时候根据具体情况分配 (http://www.hightopo.com...treeView.sm().ms(function(){// 监听选中变化事件 var ld = treeView.sm().ld();// 获取最后选中节点 if (ld) self.updateForm...,// 指定对话框宽度 height: 220,// 指定对话框高度 draggable: true,// 指定对话框是否可拖拽调整位置 closable...这块代码非常简单,只需要对选中类型进行过滤即可: listView.setVisibleFunc(function(data){// 设置可见过滤器 if (!

    1.5K30

    C# WPF新版开源控件库:Newbeecoder.UI之NbTreeView

    树状控件主要功能是显示分层结构可折叠节点内容,在控件可以使用ItemsSource作为数据源。 有一个重要属性HierarchicalDataTemplate对象用于设置层级数据模板。...在NbTreeView控件TreeViewItem填充内容项,当设置IsExpanded属性为true表示展开,如果想获取选中状态使用IsSelected。...Newbeecoder.UI开源控件Demo下载链接:https://share.weiyun.com/py6W1dcK 控件库根据产品原型图开发出一样UI界面,先视频演示控件库效果: 视频内容 在自定义...NbTreeView增加几项属性,分别是MaskBackground(遮罩层背景色)、ShowIcon(显示展开图标)、ShowNoItemsIcon(无子项,是否显示展开图标)、IconWidth(项左侧展开图标宽度

    71920
    领券