【发布时间】:2012-10-29 07:42:30
【问题描述】:
我在以下代码中有 2 个嵌套的 DataContexts(DataContext 和 ItemsSource):
<TabItem Header="Something" Name="myTabItemName" d:DataContext="{Binding myViewModel}">
<Grid>
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding muObservableCollection}" Name="myDataGridName" HeadersVisibility="Column">
<DataGrid.Columns>
<DataGridTextColumn Header="Foo 01" Binding="{Binding Foo_01}" />
<DataGridTextColumn Header="Foo 02" Binding="{Binding Foo_02}" />
<DataGridTemplateColumn Header="My custom combobox">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<!-- Here I want to bind back to 'myViewModel's' myProperty. I've tried this way: -->
<ComboBox ItemsSource="{Binding Path=myProperty, RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</TabItem>
我想将myViewModel(返回)分配给ComboBox'sDataContext。问题是ComboBox 已“覆盖”DataContext 行:
<DataGrid ItemsSource="{Binding muObservableCollection}" ... >
我该怎么做?
【问题讨论】:
-
您可以使用一种称为“数据上下文代理”的技术。例如,请参见此处(Silverlight,但我认为它适用):weblogs.asp.net/dwahlin/archive/2009/08/20/…
标签: wpf binding datacontext nested