2010-08-09 77 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

相關問題