Wpf 从集合绑定到ViewModel属性的数据绑定?

Wpf 从集合绑定到ViewModel属性的数据绑定?,wpf,silverlight,xaml,Wpf,Silverlight,Xaml,我会尽量使这句话简明扼要 我有一个ViewModel和一组模型(即飞机) 我有一个绑定到ViewModel的Xaml页面 Xaml页面有一个绑定到Airplanes集合的DataGrid 对于其中一个DataGrid列模板,我希望它显示“EngineComponents”列表,其中EngineComponents是在ViewModel中定义的项目集合。 关键在于: EngineComponents是基本上静态的零件集合。数据网格中的所有Airplance行应显示相同的EngineCompon

我会尽量使这句话简明扼要

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

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

关键在于: EngineComponents是基本上静态的零件集合。数据网格中的所有Airplance行应显示相同的EngineComponents列表

飞机


如何在不编写额外代码(事件处理程序等)的情况下解决EngineComponents绑定问题?

您需要使用相对资源。在我的示例中,我将使用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>