2010-08-09 75 views
2

试图解决使用mvvm-light的一个非常简单的问题,但经过StackOverflow和大量Google搜索的筛选之后,我还没有想出一个简单的解决方案。如何将绑定数据项传递给ListBox项的ViewModel?

我有一个ListBox与dataTemplate。该DataTemplate中包含一个用户控件来显示内容

<ListBox ItemSource={Binding Posts} > 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <ctl:PostControl/> <-- child control I'm trying to pass data to 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

我已经得到的ViewModels两个父页面(用于绑定到的职位,也没有问题),并在PostControl上显示各个岗位。

问题:如何将单个帖子(从帖子控件的绑定)获取到PostControl的viewModel中?

我用一个DataContext上PostControl定义:

DataContext="{Binding PostControlViewModel, Source={StaticResource Locator}}" 

这似乎是工作,但我需要访问必将由父列表框这种控制的各个帖子。我如何将单个帖子传递给PostControls的视图模型?

回答

1

没有看到你的UserCtl,很难说出了什么问题,但我会说你的ListBox看起来不错,并且每个Control应该绑定到Posts的一个元素。

你应该怎么做不是 do是覆盖在UserCtl中,所以我认为DataContext="..."属性应该简单地去。

假设Posts是一个PostControlViewModel的列表。如果它是(商业)模型发布类的列表,您需要一个转换器。但它应该包含ViewModels。

+0

我想到了ViewModels列表(很笨重的恕我直言,但它会工作),但转换器是一个有趣的想法,谢谢! – Mekon 2010-08-09 19:21:47

+0

转换器工作得很好,感谢您的想法! – Mekon 2010-08-09 22:52:54

+0

@Mekon:如果它适合你,那就OK。但我仍然认为ViewNodel应该公开列表的ViewModels,而不是Biz对象列表。 – 2010-08-10 10:28:45

相关问题