【发布时间】: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" 属性。虽然没有足够的信息来完全诊断问题,但您可能将多个组合框与同一个集合绑定,通过设置此属性将导致您遇到的问题。鉴于您提供的示例,您不应该需要此功能。