【问题标题】:Setting item in combobox in silverlight在silverlight的组合框中设置项目
【发布时间】:2011-03-25 07:29:34
【问题描述】:

我有一个相当简单的任务要做,至少我是这么想的。 我在 silverlight 中有一个组合框,其中包含一些值,例如:

ComboBox hej = new ComboBox();
hej.Items.Add("blue");
hej.Items.Add("yellow");
hej.Items.Add("red");
hej.SelectedIndex = 0;

如果用户随后保存他的作品,他可以选择一种颜色,并将其作为字符串保存在数据库中。 当我以用户身份返回并加载页面时,我想查看上次选择的颜色。

所以这就是我认为我可以解决问题的方法,但是还有另一种更简单的方法,我仍然会遇到一些错误:

object hit;

hit = hej.Items.FirstOrDefault(item => ((string)item).StartsWith(
    ivTestXml.StatusColour, 
    StringComparison.CurrentCultureIgnoreCase));

if (hit != null)
{
    hej.SelectedItem = hit;
}

【问题讨论】:

  • 您是绑定还是添加非字符串项到hej.Items 集合中?

标签: silverlight linq combobox


【解决方案1】:

在 Silverlight(和 WPF)中,SelectedItem 属性不需要 ListBoxItem 对象,而是返回并接受值本身。尝试简单:

hej.SelectedItem = ivTestXml.StatusColour;

相反。也就是说,您并没有真正以“Silverlight 方式”执行此任务。我假设您来自 Windows 窗体或 ASP.NET 背景。 Silverlight 旨在与这些技术稍有不同。您最好使用绑定执行此任务,其中视图将数据“拉”到自身(通常从视图模型,使用 MVVM 设计模式),而不是尝试从代码“推”数据到视图中-后面,就像你正在做的那样。它需要相当大的思想转变,并且需要一点时间才能突破这个障碍。但是一旦你这样做了,它就会很有意义。最好有一个视图模型,它公开 ObservableCollection 属性(用于项目列表)和所选项目的字符串属性。然后组合框可以绑定到这些属性。

希望这会有所帮助...

克里斯·安德森

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多