我会尽量保持简洁。
Xaml页面有一个绑定到Airplanes系列的DataGrid。
对于其中一个DataGrid列模板,我希望它显示“EngineComponents”列表,其中EngineComponents是ViewModel中定义的项集合。
< / LI>问题是: EngineComponents是一组基本上是静态的零件。 DataGrid中的所有Airplance行都应显示相同的EngineComponents列表。
飞机
如何在不编写额外代码(事件处理程序等)的情况下解决此EngineComponents绑定问题?
答案 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>