【问题标题】:WPF ComboBox display selected value?WPF ComboBox显示选定的值?
【发布时间】:2017-11-27 17:52:35
【问题描述】:

在显示 UI 之前,将从数据库中检索数据并将这些数据显示在屏幕上。

现在我有一个包含 2 个字段的屏幕。一个textbox 和一个combobox

textbox 的值被绑定如下:

<TextBox Text="{Binding [someViewModel].person.name, Mode=TwoWay, 
ValidatesOnDataErrors=True, ValidatesOnExceptions=True,
ValidatesOnNotifyDataErrors=True}"

现在我有一个从数据库中获取值列表的组合框,表示 黄色、绿色、蓝色 下面是我绑定ComboBox的方式:

<ComboBox IsSynchronizedWithCurrentItem="True" 
ItemSource="{Binding [someViewModel].ColorList}" 
DisplayMemberPath="ColorName" SelectedValuePath="ColorID" 
SelectedValue="{Binding [someViewModel].person.ColorID}"

我现在的问题是当我加载页面时,默认选择的值将基于[someViewModel].person.ColorID,但它显示为空。 ComboBox 中有值。当我调试它时,[someViewModel].person.ColorID 中有值但它不会显示?

当我将值从 Yellow 更改为 Green 时,该值将反映到 [someViewModel].person.ColorID 以及符合我的需要

【问题讨论】:

  • 您问题的第一部分(文本框)与问题无关,只是让您的问题更易于阅读和理解。
  • 只是为了详细说明对象的结构
  • [someViewModel].ColorList 中的任何项目的 ColorID 值是否等于 [someViewModel].person.Color ?
  • 问题只是页面加载时ComboBox中没有选择值吗?之后一切正常吗?如果是这样,您是否尝试过以编程方式设置 ComboBox 的初始值?
  • 删除 IsSynchronizedWithCurrentItem="True" 属性。虽然没有足够的信息来完全诊断问题,但您可能将多个组合框与同一个集合绑定,通过设置此属性将导致您遇到的问题。鉴于您提供的示例,您不应该需要此功能。

标签: c# wpf combobox


【解决方案1】:

您的 Color 类有 ColorID 属性,还是只有 Id?

如果是这样: SelectedValuePath="Id"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2014-11-05
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多