在我的XAML
我有以下stackpanel
可以包含元素列表,其中一些将是数据网格(有些不是)
<ScrollViewer Name="MainScrollViewer" Grid.Row="0">
<StackPanel Name="MainStackPanel">
// label
// datagrid
// label
// button
// datagrid
// .....
</StackPanel>
</ScrollViewer>
datagrids
的名称及其数量是动态的(我事先不知道)。
在我的XAML.CS中,我需要执行以下操作
- 对于我datagrid
中的每个stackpanel
- 打印
现在我知道如何打印(这不是问题),但我很难找到如何访问数据网格的stackpanel
和某种方式FOREACH
中的所有元素......
任何线索?
答案 0 :(得分:2)
foreach (DataGrid dataGrid in MainStackPanel.Children.OfType<DataGrid>())
{
}
OR
foreach (UIElement child in MainStackPanel.Children)
{
DataGrid dataGrid = child as DataGrid;
if (dataGrid != null)
{
//your code here
}
}
答案 1 :(得分:0)
您可以尝试这种方式。未经测试,希望它有效:
List <DataGrid> dataGridList = new List<DataGrid>();
for (int i = 0; i < MainStackPanel.Children.Count; i++)
{
if (typeof(DataGrid) == MainStackPanel.Children[i].GetType())
{
dataGridList.Add((DataGrid) MainStackPanel.Children[i]);
}
}
foreach(DataGrid dg in dataGridList)
{
// add your code
}
答案 2 :(得分:0)
请参阅下面的示例。由于StackPanel's
Children属性包含UIElementCollection
,您可以遍历它,查找所需的控件类型。
private StackPanel _stackPanelContainer = MainStackPanel; // Get a reference to the StackPanel w/ all the UI controls
// Since StackPanel contains a "List" of children, you can iterate through each UI Control inside it
//
foreach (var child in _stackPanelContainer.Children)
{
// Check to see if the current UI Control being iterated over is a DataGrid
//
if (child is DataGrid)
{
// perform DataGrid printing here, using the child variable
}
}