获取ListBox的ItemTemplate绑定的控件

WPF 获取 ListView DataTemplate 中控件值 RT 虽然DataTemplate 是用来绑定的,一般用ONE TWOWAY 来绑定传递或获取数据. 但是今天这个需求真是没办法,在绑定的模板内添加了一个非绑定的数据,需要手动取值. 解决方案原理: https://msdn.microsoft.com/zh-cn/library/bb613579.aspx foreach (var item in F 阅读详情

【转载 http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/a01eb1d5-cfc1-47fc-a8e5-45f7f02e8119】

How do I programmatically find a control inside an itemtemplates datatemplate, e.g. how do I find the checkbox inside the following XAML from the codebehind file..

<ListBox.ItemTemplate>
           
<DataTemplate>

                   
<CheckBox x:Name="KontoFeltCheckBox"
                             
Checked="KontoFeltCheckBox_Checked"
                             
></CheckBox>

           
</DataTemplate>
</ListBox.ItemTemplate>

 

You could walk the ListBoxItem Visual-Tree to find it’s ContentPresenter, and then find CheckBox from ContentPresenter’s ContentTemplate.  Please see example below:

Markup:
<Window x:Class="FindControlInsideDataTemplate.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
<StackPanel>
        <ListBox Name="myListBox" ItemsSource="{Binding}" >
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox x:Name="KontoFeltCheckBox" Checked="KontoFeltCheckBox_Checked">
                    </CheckBox>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        <Button Content="Test" Click="Button_Click"/>
    </StackPanel>
</Window>

Code:
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace FindControlInsideDataTemplate
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            DataContext = new List<Person>()
            {
                new Person(){Name = "Tom"},
                new Person(){Name = "Ken"},
                new Person(){Name = "Peter"}
            };
        }

        private void KontoFeltCheckBox_Checked(object sender, RoutedEventArgs e)
        {

        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            ListBoxItem myListBoxItem = (ListBoxItem)(myListBox.ItemContainerGenerator.ContainerFromIndex(0));
            ContentPresenter myContentPresenter = FindVisualChild<ContentPresenter>(myListBoxItem);
            DataTemplate myDataTemplate = myContentPresenter.ContentTemplate;
            CheckBox target = (CheckBox)myDataTemplate.FindName("KontoFeltCheckBox", myContentPresenter);
        }
        private childItem FindVisualChild<childItem>(DependencyObject obj)
                   where childItem : DependencyObject
        {
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
            {
                DependencyObject child = VisualTreeHelper.GetChild(obj, i);
                if (child != null && child is childItem)
                    return (childItem)child;
                else
                {
                    childItem childOfChild = FindVisualChild<childItem>(child);
                    if (childOfChild != null)
                        return childOfChild;
                }
            }
            return null;
        }
    }
    public class Person
    {
        public string Name { set; get; }
    }
}

 

WPF ListBox控件实战:如何用ItemTemplate打造个性化列表(附完整代码) 本文深入探讨了WPF中ListBox控件的ItemTemplate高级应用,通过电商商品列表等实战案例,详细展示了如何利用DataTemplate定制个性化列表项布局,实现数据绑定、样式触发和命令交互,并提供了性能优化建议与完整代码,帮助开发者打造功能丰富、视觉出众的WPF应用界面。 阅读详情

相关推荐

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

WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见的标准用户界面元素。自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。

愚公智库 5万+

WP ListBox 遍历DataTemplate(获取所有控件)

项目需求,ListBox选中切换其选中项的Image控件的图片,其它每项ListBoxItem的相应Image控件都设置为未选中图片. 解决方案适用于ComboBox等: 1.先看xaml文件: <DataTemplate x:Name="BusTemplate" x:Key="LBDataTemplate"> <StackPanel> <StackPanel Orientation="Horizontal" Margin="10">

u014453443的博客 1034

WPF开发实战:ListBox控件全面解析与源码演示

WPF(Windows Presentation Foundation)是微软推出的一套用于构建现代Windows桌面应用程序的用户界面框架。其底层基于DirectX渲染引擎,支持硬件加速,能够实现丰富的图形、动画与多媒体体验。ListBox默认的项展示方式较为简单,仅能显示文本内容。但在现代UI设计中,往往需要更加丰富的视觉呈现,比如图文混排、动态效果、数据状态标识等。WPF提供了属性,允许开发者通过定义来自定义每一项的显示样式。

weixin_34456923的博客 1162

老猿WPF DataTemplate 与 DataGrid /ListBox 视图绑定数据

本例实现DataTemplate示例,数据上下文在View页面绑定, View后台无任何数据逻辑代码,全部在ViewModel中。

copywater的专栏 1325

实现ListBox控件列表项的交错背景色

本章主要对ListBox控件的列表项设置技术进行一个全面的概览。我们将探讨ListBox控件在不同环境下的基本用法,并概述在Windows Forms和WPF中设置ListBox项的背景色的不同方法。接下来的章节将详细介绍如何在Windows Forms和WPF环境下设置ListBox控件的项,包括如何利用事件处理和XAML样式来实现这些设置。我们将从基础概念讲起,逐步深入到实际代码实现。Windows Forms 是微软公司开发的一个用于快速构建桌面应用程序的框架。

weixin_35509395的博客 836

wpf修改ListView和ListBox风格

wpf修改ListView和ListBox风格,介绍了在wpf中ListView和ListBox的使用

MVVM模式下 DataTemplate 中控件的绑定

  今天给ListBox中通过DataTemplate生成的Button绑定命令时,一开始Button始终找不到绑定的命令。现找到了正确的绑定方式,特来记录一下。   先上个正确的示例:  <ListBox Grid.Column="0" ItemsSource="{Binding CallBussiness}"> <ListBox.ItemsPane...

a543494878的博客 873

WRF和WPS模型在Ubuntu系统上的安装与常见问题解决指南

本文详细介绍了在Ubuntu系统上安装WRF和WPS模型的完整教程,涵盖系统环境配置、依赖库安装、源代码编译以及常见问题的解决方案。重点解决了WPS编译中intmath.f文件的修改、环境变量设置和编译器兼容性等关键难点,帮助用户高效部署气象研究与预报模型。

weixin_29213525的博客 382

【wpf】深度解析,Binding是如何寻找数据源的

目前我常用存放数据源的一般控件都有Resources和DataContext属性,列表控件会多一个ItemsSource。可以放多个资源,但是需要给每一个资源指定一个key。而和只能放一个对象(不需要指定key)

songhuangong123的博客 2557

HT7036计量芯片SPI通信与数据读取实战解析

本文详细解析HT7036计量芯片的SPI通信与数据读取实战,涵盖SPI时序配置、命令发送、数据读取及常见问题排查。重点介绍如何通过SPI接口与MCU通信,实现电能数据的稳定采集与处理,为智能电表等应用提供实用解决方案。

vscode5coder的博客 265

String+CytoScape构建PPI网络

1.下载CytoScape Cytoscape是一款专业强大好用的物生信息分析软件,主要达用于专业的研究人员使用,软件主要适用于整合模块化网络和生物科学联系网络图的绘制,支持多种文件格式,导入后就可以直接进行编辑或者分析等操作了,除此之外,软件还提供了强大的编辑工具,支持添加相应的注释信息,软件基于java环境组件打造。 下载地址:https://cytoscape.org/ 因为软件基于java...

xiaobai1_1的博客 1万+

C# WPF中binding指定控件的DataContext

问题描述 有一个listbox控件,如: <ListBox ItemsSource="{Binding peoples}"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Name}"/>

音尘啊 3365

Hermes Agent vs OpenClaw:2026 年开源 AI Agent 框架深度对比

两款 2026 年最受关注的开源 AI Agent 框架,一个主打「自进化」,一个聚焦「网关路由」——它们究竟有何不同?本文将从架构原理、核心机制、使用方式到适用场景,为你全面拆解。无论你是 AI 研究者、开发者,还是想用 AI 提升工作效率的个人用户,这篇文章都将帮助你做出最适合的选择

程序猿_三产 3758

浅谈ListBox在Windows Phone 7 中的使用

在Windows Phone 7 Tips (5) 中曾经提到,在Windows Phone 7 中页面的布局一般分为:Panoramic、Pivot、List和Full Screen。而通常List的实现方式就是ListBox。 一、什么是ListBox? ListBox 是一个显示项集合的控件。一次可以显示 ListBox 中的多个项。 ListBox继承自It...

weixin_34413357的博客 67

FPGA实战笔记——SDRAM乒乓缓存与OV5640视频采集(VGA显示优化篇)

本文详细介绍了基于FPGA的SDRAM乒乓缓存技术在OV5640视频采集与VGA显示优化中的应用。通过设计多时钟域同步和双Bank乒乓缓存策略,有效解决了摄像头30fps输出与VGA 60fps显示之间的帧率不匹配问题,实现了720P高清视频的流畅稳定显示,为实时图像处理系统提供了可靠的硬件解决方案。

ss78901的博客 884

PCL 三维重建 泊松曲面重建算法

本文介绍了基于泊松曲面重建算法的三维重建过程。泊松重建是一种利用点云数据生成三维表面的算法,它基于点云的法线估计和泊松方程的求解,能够生成光滑且连续的曲面模型。该方法适用于复杂形状和细节的表面重建。

纵马踏花向自由 1090

ListBox使用

一、什么是ListBox? ListBox 是一个显示项集合的控件。一次可以显示 ListBox 中的多个项。 ListBox继承自ItemsControl,可以使用Items或者ItemsSource设置其内容。 二、在ListBox中显示数据 我们可以通过两种方式在ListBox中显示:直接内嵌ListBoxItem(或其他UIElement,如TextBlock等) 与数据绑...

weixin_33811961的博客 114

杰理可视化SDK开发-杰理AC1123N芯片SDK开发笔记合集

该文档主要描述 AC112N开发相关的使用说明和注意事项,收集并持续更新开发调试过程中的相关疑问和解答,对SDK介绍文档做一个补充说明。写作人:李永奉,参考项目MD-026H; AC112N-SDK项目帮助文档在杰理开发者平台(JL DP)'帮助'处进入,如本文档有与后续帮助文档或工具注释说明冲突,以后者为标准。

李永奉的博客 183

使用ListBox控件来实现直方图控件(二)

前一篇文章里面讲到了实现一个直方图控件所要注意的问题,既然是一个控件,那么需要先将给用户调用的API调用出来。如果读者有使用Office Excel的经验的话,就会发现,制作一个直方图,实际上只需要显示直方图的数据就可以了,如下图所示: 上图,再分解一下,可以看到每一个Series是一个系列的数据(比如一个数组);而每一个Category可以看成是用来识别一个数据的标识(例如数组的下标

Donjuan的专栏 3079

NX二次开发点通过云配准获取相同体

先找到体的参考方向(这个参考方向对于相同体重合之后是相同的),这个时候我们的思路是三个不共线的点确定一个坐标系,然后和绝对方向求转换矩阵。然后获取体的所有边的几何中心,把这些点通过转换矩阵转换之后存起来,再和另外一个体转换之后的点数据作对比,在误差范围内配对点的数量等于体获取点的数量就是相同体

qq_39541524的博客 1646

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

WPF ListBox 控件绑定 Binding

当我们需要用到循环的列表内容,并且模板化程度高的时候,建议使用 ListBox 来做绑定。

weixin_40029679的博客 2026

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C# wpf 使用ListBox实现尺子控件

尺子在客户端开发中有一定的应用场景,比如厘米尺、白板的画线尺、视频剪辑的时间尺。一般可以采用用户控件通过自绘的方式实现,但今天我要讲一个不一样的方法,不使用自定义控件也不用用户控件,只需要ListBox即能实现一把尺子。............

codeofcc的博客 2109

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WPF之ListBox

通过。

Major_S的博客 1088

Windows Phone 如何获取ListBox的ItemTemplate/DataTemplate 中指定的控件

当我们使用数据绑定的控件,比如说ListBox,我们通常会自定义ListBox的模板(一般建议使用Blend工具修改模板),而在某些情况下,我们需要获取DataTemplate中的某一控件,以对其做一些特定的操作。那我们如何获取呢?事实上,我们可以使用VisualTreeHelper类来获取指定的控件。 下面是具体的Demo: 前台XAML代码: 后置代码代码: 如果获取L...

weixin_30938149的博客 132

WPF —— ListBox控件、GroupBox控件详解

ListBox 是一个 ItemsControl,这意味着它可以包含任何类型的对象的集合 (,例如字符串、图像或面板)。一个 ListBox 中的多个项是可见的,与仅 ComboBox具有所选项可见的项不同,除非 IsDropDownOpen 属性为 true。该 SelectionMode 属性确定一次是否可以选择多个项 ListBox。

一个新人博客,愿多多支持。 1934
上一篇: C#一次连接数据库执行多条sql语句(三种方法)
dgwind
博客等级 码龄19年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值