Ваш код очень близок к цели, все, что вам нужно сделать, чтобы заставить его работать, это заменить строку
<ItemsControl x:Name="itemsControl" ItemsSource="{Binding AllocationLoadingMessages}" >
с
<ItemsControl x:Name="itemsControl" ItemsSource="{Binding}" >
Я проверял это как в Silverlight 3, так и в 5, так что я думаю, что это будет работать и в 4.
Я не уверен, для чего предназначен ваш код set { }
для свойства AllocationLoadingMessages
; Вы не должны заменять коллекцию каждый раз, когда вносите в нее изменения. Когда я заставил это работать, все, что я сделал в модели представления, было этим:
public ObservableCollection<string> AllocationLoadingMessages { get; set; }
private int _loadingMessageNumber = 0;
private void Add()
{
AllocationLoadingMessages.Add( "Loading message #" + ++_loadingMessageNumber );
PropertyChanged( this, new PropertyChangedEventArgs( "AllocationLoadingMessages" ) );
}
private void RemoveFirst()
{
if( AllocationLoadingMessages.Count > 0 )
{
AllocationLoadingMessages.RemoveAt( 0 );
PropertyChanged( this, new PropertyChangedEventArgs( "AllocationLoadingMessages" ) );
}
}
Извините, я опоздал (не сталкивался с этим вопросом до сих пор), но я надеюсь, что это поможет хотя бы другим, которые ищут ответ на этот вопрос.