【问题标题】:Why the text of combobox show the items with property name?为什么组合框的文本显示具有属性名称的项目?
【发布时间】:2018-07-30 13:00:34
【问题描述】:

我正在使用 WPF 进行项目。我有一个 ComboBox,里面装满了我数据库中的项目。我正在尝试获取在 ComboBox 中选择的项目的 ID,它正在显示项目,但 Combobox 的文本也显示属性名称。这是我用来填充 ComboBox 的代码。

using (var Context = new ProfetusModel())
{
    var GetQuestions = Context.Questions.Select(ques => new {Questions=ques.Question1,ID=ques.IdQues }).ToList();
    // CompoQues.ItemsSource = GetQuestions;
    CompoQues.ItemsSource = GetQuestions
    CompoQues.DisplayMemberPath = "Questions";
    CompoQues.SelectedValuePath = "ID";
    CompoQues.SelectedIndex = 0;
}

它正在工作,但显示像这张图片

如何更改组合框中显示的问题的格式,以便仅显示问题本身的文本,而不是前大括号 - 即,

文本显示“{Questions = What is the name of (text of selected question)...}”

文本应该只显示“What is the name of (text of selected question)”

【问题讨论】:

  • @FrankerZ 伙计,这不是我的问题,问题是我如何从组合框的文本中隐藏属性名称?
  • Combobox 似乎使用了ToString 的默认实现。覆盖它以仅返回 Questions 值或仅将字符串值存储在组合框中。
  • @RobinB 我不明白我应该怎么做才能修复它
  • @RobinB OP 使用 DisplayMemberPath,因此不应显示 ToString() 值。
  • 您能否提供一个带有 xaml 和代码的MCVE,我们可以使用它来重现它?创建一个新项目并粘贴您的 mcve,看看我们是否可以复制它。

标签: c# wpf linq entity-framework-6


【解决方案1】:

尝试将您的代码更新为:

public struct ComboItem
{
    public string Question { get; set; }
    public int ID { get; set; }
}

using (var Context = new ProfetusModel())
{
    var GetQuestions = Context.Questions.Select(ques => new ComboItem { Question = ques.Question1, ID = ques.IdQues }).ToList();

    CompoQues.ItemsSource = GetQuestions
    CompoQues.DisplayMemberPath = "Question";
    CompoQues.SelectedValuePath = "ID";
    CompoQues.SelectedIndex = 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2020-07-10
    • 1970-01-01
    • 2017-11-06
    • 2012-02-04
    相关资源
    最近更新 更多