WPF 中设置Combox下拉框Text 显示值

本文介绍了如何在WPF客户端中创建一个带有树形结构的下拉列表,并在用户选择子项时显示父级和子级的组合文本。通过将TextBox与ComboBox结合,实现了在选中子项时自动拼接父级和子级文本并在TextBox中显示的效果。此外,还提供了代码示例来设置TextBox为透明层,允许点击穿透到ComboBox。
摘要由CSDN通过智能技术生成

最近在写一个WPF客户端的一个小程序,其中有个小需求如下:

  1. 展示下拉列表里面有树形结构
  2. 点击下拉子项时同时显示父级和子级文本

也就是说在DisplayMember 中有两种显示方式

  1. 下拉列表显示时,显示的是DisplayMember 的值
  2. 点击选中子项时,需要计算子级和父级的文本并进行拼接,然后显示在combox 中

操作步骤:

  1. 使用Textbox做高宽统一放置在Combox的上方,漏出下拉框的下拉箭头,把Textbox做成透明层(这里不是界面透明,是事件穿透哦),把Combox 与Textbox 分组为一组Gird中 做好高宽自动同步拉伸
<Grid Margin="62,4,220,33">
        <ComboBox x:Name="cmbCategoryAdd1"/>
        <TextBox IsReadOnly="True" x:Name="txtcmbCategoryAdd1" Text="" Margin="0,0,18,0"/>
</Grid>

效果如下:

  1. 现在要把Textbox 做成透明层
TextBox text = window.GetControlByName<TextBox>("txt" + comboBox.Name);
            text.Text = comboBox.GetComboxSelectedValue();
            text.IsHitTestVisible = false;//设置文本框为透明层

代码里的window就是当前窗口(this),GetControlByName 也贴出来

/// <summary>
/// 根据控件名称,查找控件
/// </summary>
public static T GetControlByName<T>(this Window obj, string elementName) where T : FrameworkElement
{
    return ((T)obj.FindName(elementName));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值