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

时间:2014-02-18 21:11:03

标签: wpf silverlight xaml

我会尽量保持简洁。

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

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

    < / LI>

问题是: EngineComponents是一组基本上是静态的零件。 DataGrid中的所有Airplance行都应显示相同的EngineComponents列表。

  

飞机

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

1 个答案:

答案 0 :(得分: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>