我有一个使用数据网格在其模板这样一个ItemsControl:从绑定的项目获取DataGrid中的ItemsControl
<ItemsControl Name="icDists" ItemsSource="{Binding Dists}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding}" Width="150" Margin="5" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Key" Binding="{Binding Key}" Width="1*" />
<DataGridTextColumn Header="Value" Binding="{Binding Value}" Width="1*" />
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
ItemsControl的被绑定到我的模型Dists
属性,它看起来像这样:
ObservableCollection<Dictionary<string, string>> Dists;
如何获取与Dists属性中的项目对应的DataGrid?我试过这个代码,这给了我一个ContentPresenter,但我不知道如何获得它的DataGrid中:
var d = Dists[i];
var uiElement = (UIElement)icDistribucion.ItemContainerGenerator.ContainerFromItem(d);
我试着走了VisualHelper.GetParent
树,但找不到数据网格。
为什么你需要获取datagrid?如果你做了适当的绑定和通知,你需要的所有数据就在Dists集合中。 – 2014-09-26 01:38:56
我需要手动调用DataGrid上的事件。 – user3557327 2014-09-29 15:49:47