【问题标题】:How to bind StackPanel Children from a ViewModel?如何从 ViewModel 绑定 StackPanel 子项?
【发布时间】:2011-03-13 23:23:28
【问题描述】:

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 是在代码中创建的 TextBlock 的集合。 XAML 解析失败,Children 属性不能以这种方式绑定。

绑定到 StackPanel 本身的方法是否可以修复?我应该使用不同的容器类型吗?我看到另一个问题,那个人用代码创建了整个 StackPanel,然后使用了 ContentPresenter...

底线,我想找到一种方法将我的视图数据绑定到视图模型,使用 StackPanel 之类的东西作为容器,随着时间的推移,连续的项目将被添加到容器中。最佳方法?

【问题讨论】:

    标签: silverlight mvvm silverlight-4.0


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-22
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 2012-01-05
      • 2021-12-17
      相关资源
      最近更新 更多