WPF:更改组合框的 ItemTemplate 会删除您键入时向下跳转列表的功能。有任何解决这个问题的方法吗?

2024-02-11

PersonVM.cs

public class MainWindowVM
{
    public MainWindowVM()
    {
        PersonList = new ObservableCollection<Person>(Employees);
    }

    private Person[] Employees = new Person[]
    {
        new Person { ID = 1, Name = "Adam" },
        new Person { ID = 2, Name = "Bill" },
        new Person { ID = 10, Name = "Charlie" },
        new Person { ID = 15, Name = "Donna" },
        new Person { ID = 20, Name = "Edward" }
    };

    public ObservableCollection<Person> PersonList { get; set; }
}

人物.cs

public class Person
{
    public string Name { get; set; }
    public int ID { get; set; }
}

主窗口.xaml(功能工作版本——不是我想显示的)

<Window x:Class="TestApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <ComboBox Height="23" Width="300"
                  ItemsSource="{Binding Path=Objects}"
                  DisplayMemberPath="Name"
                  >
        </ComboBox>
    </Grid>
</Window>

主窗口.xaml(显示正确 - 功能不正常)

<Window x:Class="TestApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid>
        <ComboBox Height="23" Width="300"
                  ItemsSource="{Binding Path=Objects}"
                  >
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock DataContext="{Binding}">
                        <TextBlock.Text>
                            <MultiBinding StringFormat="{} {0} | {1}">
                                <Binding Path="ID" />
                                <Binding Path="Name" />
                            </MultiBinding>
                        </TextBlock.Text>
                    </TextBlock>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
    </Grid>
</Window>

第二个代码显示我希望 ComboBox 显示的内容{ID} | {Name},但是它剥夺了 ComboBox 的一个常用功能。在第一个示例中,当选择 ComboBox 时,用户可以开始在其中键入内容并使其在列表中向下跳转。例如,如果您按字母 A,它会跳转到“Adam”,B 会跳转到“Bill”,等等。这就是 ComboBox 的工作原理。但是,当我覆盖 ComboBox ItemTemplate 时,它​​会失去该功能。是否有另一种方法可以绑定我需要的内容并保留该功能或重新启用它?也许 ItemTemplate 设置错误?


看我对这个问题的回答:我可以使用多重绑定进行文本搜索吗 https://stackoverflow.com/questions/4750220/can-i-do-text-search-with-multibinding

不幸的是,TextSearch.Text 在 DataTemplate 中不起作用。我认为你有两个选择

Option 1。将 ComboBox 的 IsTextSearchEnabled 设置为 True,重写源类中的 ToString 并将 TextBlock 中的 MultiBinding 更改为 Binding

<ComboBox ...
          IsTextSearchEnabled="True">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox> 

public class Person
{
    public override string ToString()
    {
        return String.Format("{0} | {1}", Name, ID);
    }

    public string Name { get; set; }
    public int ID { get; set; }
}

Option 2。在源类中创建一个新属性,在其中组合名称和 IDTextSearch.TextPath。另外,你应该打电话OnPropertyChanged for NameAndId每当你这样做的目的Name or ID

<ComboBox ...
          TextSearch.TextPath="NameAndId"
          IsTextSearchEnabled="True">


public string NameAndId
{
    return String.Format("{0} | {1}", Name, ID);
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF:更改组合框的 ItemTemplate 会删除您键入时向下跳转列表的功能。有任何解决这个问题的方法吗? 的相关文章

  • 如何在C编程中获取当前时间(以毫秒为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 ANSI C 测量以毫秒为单位的时间 https stackoverflow com questions 361363 how to measure time in milliseconds
  • 在 WPF 中的不同控件上显示验证错误模板

    我有一个UserControl包含其他控件和TextBox 它有一个Value绑定到的属性TextBox文本并有ValidatesOnDataErrors设置为 True 当验证错误发生时Value属性绑定 错误模板 标准红色边框 显示在整
  • 函数原型和数组参数

    我正在学习 C 语法 并且已经开始研究数组了 我想问你一个问题 但首先让我回顾一下 这样我就知道我已经弄清楚了 我知道您可以使用以下语法将变量定义为数组 name
  • 如何获取任意类型的默认值

    在 C 中我可以写这样的东西 class AnyThing
  • 使用 boost::iterator_facade<>

    我有一个链表结构 struct SomeLinkedList const char bar int lots of interesting stuff in here DWORD foo SomeLinkedList pNext 它是现有
  • CMake - 未定义参考

    我正在尝试将 gtest 包含到我的项目中 问题是我在 GTest 中收到未定义的引用错误 我正在尝试在 Gtest 中测试 Node 类 在节点的构造函数中 我使用类记录器 尽管我已将库记录器添加到 gtest target 中 但我仍然
  • 设置外部应用程序焦点

    在 VB NET 中 您可以使用以下命令将焦点设置到外部应用程序 AppActivate Windows Name or AppActivate processID As Integer 现在 如果您这样做 则效果很好 Dim intNot
  • “volatile void function( ... )” 做了什么?

    我见过从语法角度来看 C 函数中 volatile 关键字有多少种用法 https stackoverflow com questions 7643528 how many usage does volatile keyword have
  • 没有真正理解 std::atomic::compare_exchange_weak 和compare_exchange_strong 的逻辑

    我读了https en cppreference com w cpp atomic atomic compare exchange https en cppreference com w cpp atomic atomic compare
  • 让 GCC/Clang 使用 CMOV

    我有一个简单的标记值联合 这些值可以是int64 ts or doubles 我正在对这些联合进行加法 但需要注意的是 如果两个参数都代表int64 t值 那么结果也应该有一个int64 t value 这是代码 include
  • 如何将 Binding.Path 属性绑定到基础数据?

    我正在尝试以非常动态的方式绑定 TextBlock 的 Text 属性 我需要从底层对象获取路径 这是数据模板
  • Windows Phone HttpClient PostAsync 挂起且无响应

    我在拨打电话时遇到问题HttpClientWP 应用程序的 post 方法 PostAsync总是挂起并且不给出任何响应 当我从 WPF 应用程序中尝试时 相同的代码可以工作 这是我正在做的事情 服务器Web API代码 public cl
  • MPI_Gatherv:根数组中收到的垃圾值

    我正在尝试实施MPI Gatherv函数于C 根据我的程序 包括 root 在内的每个进程都应该创建一个大小等于 进程的等级 1 这将在所有单元格中保持进程的等级 然后这个本地数组被收集到根的 rcv array 中 不知何故 我得到了垃圾
  • 如何最好地为 Visual Studio 2017 构建的 CMake C++ 项目设置输出目录?

    我使用 Visual Studio 2017 使用 vcxproj 文件构建 C 桌面项目 我喜欢默认行为 其中输出目录是项目下面的子目录 例如 myproj sln myproj vcxproj x64 myproj release my
  • 在发送传出请求之前将新的 SoapClient 绑定到特定 IP 地址

    假设应用程序所在的计算机具有 SoapClient 具体来说 我正在使用 Microsoft Web Service3 Messaging SoapClient 它通过发送传出请求并获取 SoapEnvelope 作为回报 完善的流程 与远
  • C# 编译器编译 .txt .obj .java 文件

    using System class Program public static void Main Console WriteLine Hello World Console ReadLine 我将文件另存为1 java 2 obj an
  • 检测用户是否正在滚动 dataGridView 滚动条

    我正在更新一个dataGridView与一个新的数据表使用 dataGridView1 DataSource table 但是 我不想在用户滚动 dataGridView 时执行此操作 如何检查滚动条是否正在滚动或已完成滚动 即拖动而不是单
  • RabbitMQ + Windows + LDAP 无需发送密码

    我正在尝试在 Windows 7 上使用 RabbitMQ 3 6 2 进行 LDAP 身份验证 授权 我已经在应用程序发送用户名 密码的情况下进行了基本身份验证 但密码位于我需要弄清楚如何进行的代码中避免 有没有人在不提供密码的情况下成功
  • 在 C++ 中将大型数据向量写入/读取到二进制文件

    我有一个 C 程序 它通过将 ascii 文件中的网格人口数据读取到大型 8640x3432 元素双精度向量中来计算给定半径内的人口 将 ascii 数据读入向量大约需要 30 秒 循环每列和每行 而程序的其余部分只需要几秒钟 我被要求通过
  • 字符串常量之前应有非限定 ID

    我目前正在编写一个 C 应用程序 它与 math h 结合实现了振荡器 我拥有的代码应该可以很好地用于该应用程序 尝试编译目标文件 但是我遇到编译器错误 很可能与语法 等有关 我认为这与命名空间有关 错误 终端输出 User Name Ma

随机推荐

  • 带有内嵌图像的 JEditorPane

    我正在尝试在 Java JEditorPane 中显示内联图像 下面的代码使用的 HTML 内容可以在 Firefox 中正确显示图像 但不能在 JEditorPane 中显示 有什么想法吗 谢谢 import javax swing im
  • Python索引错误值不在列表中...on .index(value)

    我是Python的初学者 对于那些对我的帖子持负面想法的人 请离开 我只是在这里寻求帮助并尝试学习 我正在尝试在一个简单的数据集中检查 0 和 1 这将用于在平面图上定义空隙和实体 以定义建筑物中的区域 最终 0 和 1 将被坐标替换 我收
  • 在元素的父元素之后插入

    在下面的示例中 我需要什么样的选择器才能插入 test3 类的父级 divouter 之后 谢谢 div class divouter div class divinner div div
  • 如何在浏览器中使用模块,同时也引用 DevTools 中的变量和函数?

    我的 HTML 设置如下 所有 ES6 模块都工作正常 唯一的问题是我现在无法引用 DevTools 中的任何内容 例如使用控制台并输入变量以查看其值或手动使用函数 如何在能够使用 DevTools 的同时导入模块 谢谢 在 DevTool
  • Maven2:如何确定 Maven 构建正在使用特定的插件版本?

    我刚刚发现 Maven 插件管理听起来很奇怪 在进行网站生成时 我想使用特定版本的 Maven 网站插件 以便实现特定的功能 假设我想使用这个插件的 2 0 1 版本 如果我使用 POM 的报告部分来使用以下命令生成项目站点 mvn sit
  • Phonegap 软键盘覆盖输入字段[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我的 Phonegap 3 1 中的软键盘覆盖了我的 Android 4 x 中的输入字段 这个问题一直很烦人 我刚才差点就发帖问了 但突然
  • 是否可以将react-datepicker与react hooks表单一起使用?

    是否可以将react datepicker与react hooks表单一起使用 我尝试了以下示例 但没有运气 import React useState from react import styles css import useForm
  • 将字符串解析为 DirectoryInfo 的正确方法? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个程序 为了避免复杂化 我需要将给定的字符串变量解析为 DirectoryInfo 我想知道是否可以将字符串解析为 Direc
  • 如何制作骨头形状的纽扣

    我目前正在为我的网站试验一个按钮 我希望它看起来像一个普通按钮 但是一旦你将其悬停 它就会变成一根骨头 我的网站是关于狗的 所以我使用了一个已经存在的 codepen 项目 最终得到了这个 root bg 1a1e24 color eee
  • 使用 jQuery 重复元素

    我确信这对于正确的人来说是显而易见的 但是如何使用 jQuery 重复一个元素呢 本质上 我希望 jQuery 无限次重复内联元素 就像您使用 CSS 来重复背景纹理的图形一样 我一直在研究 clone 和 each 但确实可以使用一些指针
  • AngularJS:指令隔离范围 - 范围变量未定义

    请有人能给我解释一下为什么吗attrDir的范围变量是可见的 并且oneWay不是吗 我以为scope 也是孤立的 angular module test angular module test directive attrDir attr
  • 访问项目资源中的图像?

    如何在运行时访问已添加到项目资源中的图像 我希望能够做这样的事情 if value picBox1 image Resources imageA else picBox2 image Resources imageB Something I
  • MongoDB toArray 性能

    我正在尝试从 Mongo Node 中的术语集合构建类别树 但首先我使用 in 选择所有树元素 console time termsCol find var terms await termsCol find term id in flat
  • gitlab API有速率限制吗

    github对OAuth客户端的速率限制为5000 小时 但我找不到相同的信息gitlab 除了创建新用户和重置密码6次 分钟 是否意味着没有限制 答案是不再是 不 https gitlab com gitlab org gitlab ru
  • iceConnectionState 已断开连接(通过互联网使用时)

    这个问题以前曾被问过 但我还没有找到答案 我基本上遇到了与描述相同的问题here https stackoverflow com questions 34405816 peerjs webrtc iceconnectionstate fai
  • 使用 openCV 从图像中读取数字和字母

    我正在开发一个应用程序 使用 c 中的 opencv 读取图像中的字母和数字 我首先将给定的彩色图像和颜色模板更改为二值图像 然后调用方法cvMatchTemplate 这个方法只是突出显示了模板匹配的区域 但不清楚 我只是不想看到该区域
  • 如何保留从常规终端到 gnu 屏幕的 emacs 颜色

    作为记录 我使用的是 OSX 雪豹 当我直接从终端使用 emacs 时 我有一个我非常满意的颜色集 例如 用于 c c 黑底绿 红色注释 彩色关键字 等等 其中一些是在我的 终端首选项 中设置 有些位于我的 emacs 文件中 见下文 当我
  • JFreeChart 链接轴

    我创建了一个带有两个独立 JFree 图表的框架 以 2x1 网格布局保存 顶部图表显示 Canlestick 图表 底部图表显示时间序列图 我想要做的是链接两个图表显示的 X 轴 以便当我放大一个图表时 另一个图表会缩放到相应的时间段 这
  • netbeans 中的 libtesseract303.dll 问题

    我正在实施 OCR 系统 当我将 dll 文件放在 java 类路径上时 出现以下错误 Exception in thread main java lang UnsatisfiedLinkError G software apache to
  • WPF:更改组合框的 ItemTemplate 会删除您键入时向下跳转列表的功能。有任何解决这个问题的方法吗?

    PersonVM cs public class MainWindowVM public MainWindowVM PersonList new ObservableCollection