【发布时间】:2016-03-11 22:23:52
【问题描述】:
我有一个 ItemsControl 在其模板中使用 DataGrid,如下所示:
<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;
如何获取与 Diss 属性中的项目对应的 DataGrid?我试过这段代码,它给了我一个 ContentPresenter 但我不知道如何从中获取 DataGrid:
var d = Dists[i];
var uiElement = (UIElement)icDistribucion.ItemContainerGenerator.ContainerFromItem(d);
我尝试使用 VisualHelper.GetParent 向上爬树,但找不到 DataGrid。
【问题讨论】:
-
为什么需要获取datagrid?如果您进行了适当的绑定和通知,您需要的所有数据都在 Diss 集合中。
-
我需要手动调用 DataGrid 上的事件。
标签: c# wpf itemscontrol