Как связать StackPanel Children из ViewModel? - PullRequest
2 голосов
/ 09 июля 2010

Новое в Silverlight.Я работаю над приложением чата, где новые сообщения чата добавляются в конец списка.У меня была рабочая версия, которая использовалась как StackPanel внутри ScrollViewer, а затем в некотором коде позади использовалась StackPanel.Children.Add ().

Я пытаюсь преобразовать это в подход View-ViewModel, и я могуне могу понять, как связать дочерние элементы StackPanel с любым свойством коллекции.Я пробовал это:

<ScrollViewer Name="scrollMessages" Grid.Row="2" Margin="0,0,0,0" VerticalScrollBarVisibility="Visible">
    <StackPanel x:Name="pnlMessages" Orientation="Vertical" Children="{Binding Path=ExampleTBs}" />
</ScrollViewer>

, где ExampleTBs представляет собой коллекцию TextBlocks, созданных в коде.Это не может выполнить синтаксический анализ XAML, поэтому свойство Children не может быть привязано таким образом.

Исправим ли подход привязки к самой StackPanel?Должен ли я использовать другой тип контейнера?Я видел еще один вопрос, когда парень создал весь код StackPanel в коде, а затем использовал ContentPresenter ...

Внизу, я хотел бы найти способ привязки своего представления к модели представления с использованием чего-то вроде StackPanelв качестве контейнера, где последовательные элементы будут добавлены в контейнер с течением времени.Лучший подход?

Ответы [ 2 ]

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

Используйте ListBox (или любое другое ItemsControl) и привяжите свойство ItemsSource к ObservableCollection в вашей ViewModel.

1 голос
/ 09 июля 2010

Вам нужно использовать StackPanel?Если вместо этого вы используете ItemsControl , это все равно представляет каждое сообщение чата в виде вертикального списка, а также позволяет связывать данные.

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