从父母Viewmodel绑定

时间:2014-05-16 14:33:46

标签: c# wpf mvvm binding

我的视图中包含listbox。我将listbox绑定到ListBoxViewModel的集合,该集合是MainViewModel的属性。然后,我为dataTemplate提供listbox,其中im绑定到ListBoxViewModel的属性。包含列表框的视图将datacontext设置为mainVeiwModel。如何绑定dataTemplate的{​​{1}}中MainViewModel的属性,该listbox的{​​{1}}绑定到ListBoxVIewModel的集合?

ItemSource位于combobox listBox中,其datatemplate绑定到ListBoxViewModel集合。请注意我试图在itemsoucrce

中绑定到MainViewModel属性以及ListBoxViewModel属性
datatemplate

1 个答案:

答案 0 :(得分:1)

最简单的方法:

<YOURWINDOW x:Name="MyWindow">
 <ListBox ItemSource="{Binding Path=CollectionOfListBoxViewModelsInMainViewModel}"
           <DataTemplate>
               .....
                <ComboBox Margin="6"
                          Width="300"
                          IsEditable="True"
                          ItemsSource="{Binding ElementName=MyWindow, Path=DataContext.MainViewModelProperty}"
                          SelectedItem="{Binding ListBoxViewModelProperty}"  //binding works
                          Text="{Binding ListBoxViewModelProperty, UpdateSourceTrigger=LostFocus}"/>   //binding works
                .....
          </DataTemplate>
       </ListBox>
</YOURWINDOW>

1)请记住,MyWindow必须将DataContext设置为MainViewModel。您可以使用任何UI元素,它不必是Window。 2)第二种解决方案是使用RelativeSource而不是ElementName。