WPF数据绑定的ComboBox仅显示ItemsSource列表的第一项

时间:2010-06-09 02:38:44

标签: wpf data-binding combobox

我确定我做的事情很愚蠢,但对于我的生活,我现在想不到。我有一个ComboBox数据绑定到一个Layout对象列表。该列表最初是空的,但随着时间的推移会添加内容。

当模型第一次更新列表时,此更新在ComboBox中正确反映。但是,即使我可以看到列表本身包含这些项目,后续更新也不会出现在ComboBox中。由于第一次更新有效,我知道数据绑定没问题 - 所以我在这里做错了什么?

这是XAML(删节):

<Grid HorizontalAlignment="Stretch">
    <ComboBox ItemsSource="{Binding Path=SavedLayouts, diagnostics:PresentationTraceSources.TraceLevel=High}" DisplayMemberPath="Name" SelectedValuePath="Name" SelectedItem="{Binding LoadLayout}" Height="25" Grid.Row="1" Grid.Column="0"></ComboBox>
</Grid>

模型的相关部分:

    public IList<Layout> SavedLayouts { get { return _layouts; } }

    public Layout SaveLayout( String data_ )
    {
        Layout theLayout = new Layout( SaveLayoutName );
        _layouts.Add( theLayout );

        try
        {
            return theLayout;
        }
        finally
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if( handler != null )
            {
                handler( this, new PropertyChangedEventArgs( "SavedLayouts" ) );
            }
        }
    }

最后,布局类(删节):

public class Layout
{
    public String Name
    {
        get;
        private set;
    }
}

在输出窗口中,我可以看到更新发生:

System.Windows.Data Warning: 91 : BindingExpression (hash=64564967): Got PropertyChanged event from TickerzModel (hash=43624632)
System.Windows.Data Warning: 97 : BindingExpression (hash=64564967): GetValue at level 0 from TickerzModel (hash=43624632) using RuntimePropertyInfo(SavedLayouts): List`1 (hash=16951421 Count=11)
System.Windows.Data Warning: 76 : BindingExpression (hash=64564967): TransferValue - got raw value List`1 (hash=16951421 Count=11)
System.Windows.Data Warning: 85 : BindingExpression (hash=64564967): TransferValue - using final value List`1 (hash=16951421 Count=11)

但我得到的不是ComboBox中的第11个项目。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

令人尴尬 - 需要使用ObservableCollection - 自从我使用WPF以来已经很久了。