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这样的容器,随着时间的推移,连续的项目将被添加到容器中。最佳方法?
答案 0 :(得分:2)
使用ListBox
(或任何其他ItemsControl
)并将ItemsSource
属性绑定到ViewModel中的ObservableCollection
。
答案 1 :(得分:1)
您需要使用StackPanel
吗?如果您使用ItemsControl,则仍然会在垂直列表中显示每条聊天消息,并且还允许绑定数据。