如何从ViewModel绑定StackPanel子代?

时间:2010-07-09 16:18:18

标签: silverlight mvvm silverlight-4.0

Silverlight新手。我正在开发一个聊天应用程序,其中新的聊天消息被添加到列表的底部。我有一个工作版本,在ScrollViewer中用作StackPanel,然后在使用StackPanel.Children.Add()后面的一些代码中。

我正在尝试将其转换为View-ViewModel方法,我无法弄清楚如何将StackPanel的Children绑定到任何集合属性。我试过这个:

<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 个答案:

答案 0 :(得分:2)

使用ListBox(或任何其他ItemsControl)并将ItemsSource属性绑定到ViewModel中的ObservableCollection

答案 1 :(得分:1)

您需要使用StackPanel吗?如果您使用ItemsControl,则仍然会在垂直列表中显示每条聊天消息,并且还允许绑定数据。