c# - 组合框中占位符的替代品
问题描述
我有一个通过我的视图模型加载的组合框。组合框一旦出现就会有一个默认的空白选择,自然可以很好地用占位符文本覆盖。
我尝试了不同的方法来实现这一点,但是由于似乎没有达到我的预期,我最终使用了一个在扩展组合框控件中支持水印功能的库(xceed)。
但是,如果我用新实体重新加载组合框,我会回到做出空白选择的情况 - 但是我可以扩展组合框以查看我的实体。
从用户的角度来看,这不是很好。这就是为什么我想知道,如何正确地将占位符文本添加到我的组合框,该文本将在我更新组合框的内容之前和之后出现。
解决方案
假设您在 IDictionary 中有选项,可能从数据库中填充。
因此,在您的 ViewModel 中,您可以执行以下操作:
IDictionary<int, string> items = GetComboOptions();
var comboDataSource = new Dictionary<int, string>({0,"Select..."}).Union(items).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
然后,您可能需要通过将代码放入属性来将其绑定到您的视图。我还没有测试过这段代码。
推荐阅读
- javascript - 如何从可组合文件中获取响应值到 setup() 方法中?
- rust - 如何在 Rust 中将 ref 转换为枚举值作为 u16(基本枚举类型)?
- css - NextJS 项目中的样式 JSX 不适用于外部(antd)组件
- android - Android Media Recorder 输出文件大小 0KB
- python - 如何将具有逗号分隔符的 CSV 文件转换为只有空格分隔符的 csv
- java - 是否有任何可用于 docusign 的 java 和 Spring Boot 集成示例源代码?
- mysql - Mysql:如何找出日期范围内每个客户的第n次交货
- java - 尝试将我的数据从我的活动传递到片段时,为什么我的数据显示为空?
- c++ - 如何在 C++ 中返回本地创建的对象?
- mysql - 抛出错误;// 重新抛出非 MySQL 错误 ^ TypeError: rows.forEach is not a function