2011-07-08 159 views
1

可以說我有一個項目列表。所以我有2個視圖:ListView和ItemView。MVVM視圖綁定

我也有2 ViewModels:ListViewModel和ItemViewModel。

在ListViewModel中,我創建並初始化了ItemViewModels的ObservableCollection。 在ListView中,我將ListBox與ItemTemplate - > ItemView和ItemSource綁定到ObservableCoolection到ListViewModel中。 我想綁定每個ItemView到每個ItemViewModel,所以我將能夠使用綁定到ItemView.xaml中,但我無法實現它。

+0

它的Silverlight。 – Ivo

+0

我不明白你最後一句話,你可以發佈XAML和代碼嗎? – anivas

回答

2

我從你的問題中瞭解到你想要將ItemViewModel綁定到ItemView.xaml,而你的ListBox駐留在其他一些xaml(比如ListBox.xaml)中。您不想在ListBox.xaml中應用與ItemViewmodel和ItemVIew相關的綁定。如果這是問題,你 可以輕鬆地創建一個DataTemplate映射實現這樣:

<Window 
    xmlns:vw="namespace of your view files (i.e. xaml files. ListBox.xaml and ItemView.xaml)" 
    xmlns:ViewModels="namespace of your view model files (i.e. ItemViewModel.cs, ListBoxViewModel.cs)"> 
    <Window.Resources> 
     <DataTemplate DataType="{x:Type ViewModels:ItemViewModel}"> 
       <vw:ItemView /> 
     </DataTemplate> 
    </Window.Resources> 
    <Grid> 
     <ListBox ItemsSource="{Binding Path=List of ItemViewmodel in ListBoxViewModel.cs}" 
    </Grid> 
</Window> 

然後,您ItemViewModel類將與ItemView控件,因爲它是在指定的資源沒有任何按鍵映射。現在你可以在ItemView.xaml中應用綁定。看,你不需要在這裏分配ListBox的Itemtemplate,它會自動解析。如果你想反正指定的ItemTemplate(並且不希望在資源指定),則這樣寫:

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <vw:ItemView /> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

無論哪種方式應該工作:)

+0

謝謝你,那很棒! – Ivo