繁体   English   中英

从父母绑定ViewModel

[英]Binding from parents Viewmodel

我有一个其中有一个listbox的视图。 我将listbox绑定到ListBoxViewModel的集合,该集合是MainViewModel的属性。 然后,我有一个listboxdataTemplate ,其中IM绑定到ListBoxViewModel的属性。 包含列表框的视图的datacontext设置为mainVeiwModel。 如何绑定到其ItemSource绑定到ListBoxVIewModels集合的listboxdataTemplate中MainViewModel的属性?

combobox位于listBox datatemplate ,其datatemplate itemsoucrce绑定到itemsoucrce的集合。 请注意,我尝试绑定到MainViewModel性能以及ListBoxViewModel性质与在datatemplate

      <ListBox ItemSource="{Binding Path=CollectionOfListBoxViewModelsInMainViewModel}"
           <DataTemplate>
               .....
                <ComboBox Margin="6"
                          Width="300"
                          IsEditable="True"
                          ItemsSource="{Binding Path=MainViewModelProperty}" //binding not working
                          SelectedItem="{Binding ListBoxViewModelProperty}"  //binding works
                          Text="{Binding ListBoxViewModelProperty, UpdateSourceTrigger=LostFocus}"/>   //binding works
                .....
          </DataTemplate>
       </ListBox>

最简单的方法:

<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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM