组合框中占位符的替代品
Alternatives to placeholder in combobox
我有一个通过视图模型加载的组合框。组合框一旦出现就会有一个默认的空白选择,自然可以用占位符文本很好地覆盖它。
我尝试了不同的方法来实现这一点,但是由于似乎没有达到我的预期,我最终使用了一个库 (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);
然后您需要通过将代码放入 属性 来将其绑定到您的视图。不过我还没有测试过这段代码。
我有一个通过视图模型加载的组合框。组合框一旦出现就会有一个默认的空白选择,自然可以用占位符文本很好地覆盖它。
我尝试了不同的方法来实现这一点,但是由于似乎没有达到我的预期,我最终使用了一个库 (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);
然后您需要通过将代码放入 属性 来将其绑定到您的视图。不过我还没有测试过这段代码。