2013-06-17 2 views
0

У меня есть «массив» текста, который динамически растет, когда данные поступают в приложение, и я хотел бы иметь возможность прокручивать (программно, а не через прямой пользовательский ввод) этот массив по вертикали, а также добавлять к нему. Я попытался поместить данные в DataGrid, но это не совсем то, что я хочу (если я не сильно изменю DG, которого я надеюсь избежать). Мне не нужно, чтобы содержимое массива было выбрано, просто доступно для просмотра, и я прокручу элемент «текущий» массив в представлении. Какие элементы WPF следует использовать для отображения и динамического роста списка?Как оживить вертикальный прокручиваемый массив динамического текста?

Edit:
Так вот мой текущий XAML фрагмент:

<Canvas Grid.Column="1" Background="#FFF8D2D2" ClipToBounds="True"> 
     <ItemsControl Canvas.Top="20" Canvas.Left="20" Name="PipeQueueIC" Height="45" Width="272" BorderThickness="1" BorderBrush="#FF149060" /> 
</Canvas> 

и вот мой код позади:

DoubleAnimation scrollQueue = new DoubleAnimation(); 
scrollQueue.By = -16; 
scrollQueue.Duration = TimeSpan.FromSeconds(0.5); 
PipeQueueIC.BeginAnimation(Canvas.TopProperty, scrollQueue); 

Однако вся ItemsControl перемещается вверх и он не «прокрутки «через« окно просмотра ». Что я здесь делаю неправильно?

+0

сообщение соответствующий код и XAML. Кроме того, вам нужно сделать это в MVVM, используя ItemControl, вместо того, чтобы использовать тип взломанного кода winforms. –

+0

Ну, вот что, я не уверен, что XAML имеет право использовать, чтобы содержать этот список текстовых элементов. Как только я это выясню, анимация, вероятно, будет довольно простой. – Conrad

+0

Удалите «Холст» и используйте «ScrollViewer». И вместо этого измените его смещение. –

ответ

0

Используйте ItemsControl:

<ItemsControl ItemsSource="{Binding SomeListOfString}"/> 

ViewModel:

public class ViewModel 
{ 
    public ObservableCollection<string> SomeListOfString {get;set;} 

    public ViewModel() 
    { 
     //... Initialize and populate the Collection. 
    } 
} 
+0

Подробнее добавлено выше. – Conrad