Я уверен, что делаю что-то глупое, но ни за что в жизни я не могу думать прямо сейчас. У меня есть ComboBox, который с привязкой к данным к списку Макетов документа. Список первоначально пуст, но вещи добавляются со временем.
Когда список обновляется моделью в первый раз, это обновление отражается правильно в 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.
Какие-либо идеи?
Стыдно - нужно использовать ObservableCollection - давно не работал с WPF.