【问题标题】:Silverlight ComboBox and SelectedItemSilverlight ComboBox 和 SelectedItem
【发布时间】:2009-06-09 02:45:21
【问题描述】:

我有以下场景:

1 包含一年中月份的列表:

public List<String> Months
{
    get
    {
        return m_Months;
    }
}


m_Months = new List<String>();

for (int i = 1; i <= 12; i++)
{
    DateTime date = new DateTime(1900, i, 1);
    m_Months.Add(date.ToString("MMM"));
}

1个ComboBox,其ItemsSource绑定到Months-list,其SelectedIndex绑定到属性Month,这是一个字符串:

public string Month
        {
            get
            {
                return m_Month;
            }
            set
            {
                if (value != m_Month)
                {
                    m_Month = value;
                    NotifyPropertyChanged("Month");
                }
            }
        }

<ComboBox SelectedItem="{Binding Month, Mode=TwoWay}" ItemsSource="{Binding Months}" />

当我从代码隐藏中设置年份时,即 Month = "May",这会正确传播到 ComboBox,并访问 Month 的 getter,但 ComboBox 不会显示“May”,因为它是选定的项目。

我想知道:这是 Silverlight 3 中的错误吗?当我使用 Telerik 的 RadComboBox 时,它工作正常。

干杯, 弗朗西丝

【问题讨论】:

    标签: c# silverlight-3.0


    【解决方案1】:

    感谢您的回复。已经尝试过您的建议并获得相同的结果。但是,我刚刚经历了 Homer Simpson 时刻(Dôh!),发现我在 ComboBox 设置它的 ItemsSource 之前设置了月份。

    不过,奇怪的是 RadComboBox 能正确执行所有操作。也许它会在 ItemsSource 更改时再次检索 SelectedItem。

    编辑:

    好吧,我简直惊呆了。显然,SL3 仍然存在一些需要修复的错误。让您大饱眼福以下...

    这不起作用:

    <ComboBox SelectedItem="{Binding Month, Mode=TwoWay}" ItemsSource="{Binding Months}" />
    

    确实如此:

    <ComboBox ItemsSource="{Binding Months}" SelectedItem="{Binding Month, Mode=TwoWay}" />
    

    看到细微的差别了吗?只要我在 XAML 中将 ItemsSource before 设置为 SelectedItem,就万事大吉了。 Wowee,我从来不知道 XAML 是线性解析的!

    【讨论】:

    • 希望他们在 Silverlight 4 中修复了它,但感谢您发布此答案。
    • 哇,我们浪费了很多时间来解决这个问题。感谢您发布答案!
    • @Kevin 这在 SL4 中没有修复。
    【解决方案2】:

    您如何设置Month 属性?我不确定ComboBox 如何确定两个项目是否相同,但我可以看到如果您传入“May”而不是Months[4],它将无法正常工作。作为测试,您可以尝试传入列表中的一个字符串,看看是否能解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2014-07-27
      • 2011-01-10
      相关资源
      最近更新 更多