我有ComboBox
ItemSource
绑定到字符串列表(理想情况下我会使用枚举),这是使用MVVM模式完成的。
现在我想将一个对象绑定到ComboBox
,它被称为SelectedUser
,我想绑定它的属性:UserType
,这是一个字符串。
所以我有这个:
<ComboBox ItemsSource="{Binding Path=Usertypes}" SelectedValue="{Binding Mode=TwoWay, Path=SelectedUser.UserType}" />
它可以工作,如果我玩它,它会改变所选用户的值,但问题是,除非我选择一个用户,否则它不会在ComboBox
中显示任何内容,然后更改{ {1}}选择,然后它可以工作,但仅适用于该用户。
我尝试使用ComboBox
,DisplayMemberPath
和SelectedValuePath
,
当我添加SelectedItem
没有显示任何内容时(仍然可以选择,但它们是隐形的或其他东西)。
那我该怎么办?这是一个错误吗?
我必须提到我有另一个ComboBox
有一个整数列表,它运行正常。
更新
我被告知我遇到了这个问题,因为我正在与comboBox中的字符串进行比较的字符串实际上并不相同。
我的字符串来自实体框架,通过Ria Services。 (User.UserType) 当它将它与ComboBox ItemSource中的字符串列表进行比较时,由于某些奇怪的原因,它们并不相等。
我也听说过,我可能必须覆盖Equal方法进行检查。 但我不知道在哪里以及如何这样做。
答案 0 :(得分:0)
如果SelectedUser
发生变化,是否会收到通知?我可以想象这可能是问题;如果没有此类通知,ComboBox
将不会重新加载SelectedValue
如果选择了其他用户,则只有在您自己进行更改时才会更新绑定。
如果不是这样,您还需要考虑除非当前值与源列表中的某个值完全匹配,否则不会显示任何选定的值。