Связанный с данными WPF ComboBox показывает только первый элемент списка ItemsSource - PullRequest
1 голос
/ 09 июня 2010

Я уверен, что делаю что-то глупое, но сейчас я не могу думать о своей жизни. У меня есть 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)

Но я не получаю этот 11-й предмет в ComboBox.

Есть идеи?

1 Ответ

2 голосов
/ 09 июня 2010

Смущает - нужно использовать ObservableCollection - давно я не работал с WPF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...