【问题标题】:Silverlight combobox not displaying the bound items`Silverlight 组合框不显示绑定的项目`
【发布时间】:2011-02-17 15:38:14
【问题描述】:

我有一个ComboBox,它的ItemSource 绑定到一个字符串列表(理想情况下我会使用一个枚举),这是使用 MVVM 模式完成的。

现在我想将一个对象绑定到ComboBox,它叫做SelectedUser,我想绑定它的属性:UserType,它是一个字符串。

所以我得到了这个:

<ComboBox ItemsSource="{Binding Path=Usertypes}"  SelectedValue="{Binding Mode=TwoWay, Path=SelectedUser.UserType}" />

它可以工作,如果我玩它,它确实会更改所选用户的值,但问题是,除非我选择一个用户,否则它不会在 ComboBox 中显示任何内容,然后更改 ComboBox选择,然后它可以工作,但仅适用于该用户。

我尝试过使用DisplayMemberPathSelectedValuePathSelectedItem, 当我添加这些时,ComboBox 没有显示任何内容(仍有选项可供选择,但它们是不可见的)。

那我该怎么办?这是一个错误吗? 我必须提到我有另一个 ComboBox 有一个整数列表,它工作正常。

更新:

我被告知我遇到了这个问题,因为我正在比较的字符串与组合框中的字符串实际上并不相同。

我的字符串通过 Ria 服务来自实体框架。 (用户.用户类型) 并且当它与 ComboBox ItemSource 中的字符串列表进行比较时,出于某种奇怪的原因,它们并不相等。

我还听说,我可能必须为该检查重写 Equal 方法。 但我不确定在哪里以及如何这样做。

【问题讨论】:

    标签: c# silverlight data-binding


    【解决方案1】:

    如果SelectedUser 更改,视图是否会通知?我可以想象这可能是问题所在;如果没有这样的通知,ComboBox 将不会重新加载 SelectedValue 如果选择了另一个用户,它只会在您自己进行更改时更新绑定。

    如果不是这样,您还需要考虑除非当前值与源列表中的值之一完全匹配,否则不会显示任何选定值。

    【讨论】:

    • 是的,SelectedUser 实现了 INotifyPropertyChanged。正如我所提到的,其他组合框(和文本框)工作正常。
    • 我在回答中添加了另一个警告,除此之外我无法想象现在可能出了什么问题......
    • 我也是这么想的。但是如果我更改并保存值,然后重新加载应用程序,它一开始也不会显示项目。所以我不确定是不是这样。
    • 好吧,那我完全没主意了。也许您可以提供更多代码,以便人们可以尝试重现它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    相关资源
    最近更新 更多