2014-02-18 133 views
-1

我会尽量保持这一点尽可能简洁。数据绑定到来自集合绑定的ViewModel属性?

  • 我有一个ViewModel与模型集合(即飞机)。
  • 我有一个绑定到ViewModel的Xaml页面。
  • Xaml页面有一个绑定到飞机集合的DataGrid。

  • 对于其中一个DataGrid列模板,我希望它显示“EngineComponents”列表,其中EngineComponents是ViewModel中定义的项目的集合。

美中不足的是这样的: 的EngineComponents是部分即本质上是静态的集合。 DataGrid中的所有Airplance行应显示相同的EngineComponents列表。

飞机

如何解决这个EngineComponents结合的问题,而无需编写额外的代码(事件处理等)?

回答

1

您需要使用RelativeSource。我将在我的例子中使用一个ListView,但想法是一样的。

<UserControl ... DataContext="{Binding ...}"> 
    <ListView ItemsSource="{Binding Airplanes}"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Drawing No." Width="80"> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <ComboBox ItemsSource="{Binding DataContext.AvailableAirplanes,RelativeSource={RelativeSource AncestorType=UserControl}}" 
             SelectedItem="{Binding Airplane}" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
      </GridView> 
     </ListView.View> 
    </ListView> 
</UserControl> 
相关问题