0

I try to change the width of all Items in several grids, which are in a grid, too. The items are Textboxes, CheckBoxes, Sliders, Buttons etc.

Here are my solution approaches:

foreach (Control itemGrid in mainGrid.Children)
            {
                if (itemGrid.GetType() == typeof(Windows.UI.Xaml.Controls.Grid));
                {
                    foreach (UIElement item in itemGrid.Children)
                        item.Width = 100;
                }  
            }

Here is an example, to understand what I mean.

<Grid HorizontalAlignment="Left" Height="885" Margin="1186,226,0,0" VerticalAlignment="Top" Width="598" Background="Black">
            <Grid HorizontalAlignment="Left" Height="220" Margin="74,53,0,0" VerticalAlignment="Top" Width="433" Background="#FF727272">
                <Button Content="Button" HorizontalAlignment="Left" Margin="54,36,0,0" VerticalAlignment="Top" Height="71" Width="143"/>
                <Button Content="Button" HorizontalAlignment="Left" Margin="283,7,0,0" VerticalAlignment="Top" Height="71" Width="143"/>
                <TextBlock HorizontalAlignment="Left" Margin="57,131,0,0" TextWrapping="Wrap" Text="More Items .." VerticalAlignment="Top" Width="351" Height="79" FontSize="48"/>
            </Grid>
            <Grid HorizontalAlignment="Left" Height="240" Margin="74,587,0,0" VerticalAlignment="Top" Width="433" Background="#FF727272">
                <TextBlock HorizontalAlignment="Left" Margin="72,81,0,0" TextWrapping="Wrap" Text="More Items .." VerticalAlignment="Top" Width="351" Height="79" FontSize="48"/>
            </Grid>
            <Grid HorizontalAlignment="Left" Height="217" Margin="74,314,0,0" VerticalAlignment="Top" Width="433" Background="#FF727272">
                <TextBlock HorizontalAlignment="Left" Margin="72,81,0,0" TextWrapping="Wrap" Text="More Items .." VerticalAlignment="Top" Width="351" Height="79" FontSize="48"/>
            </Grid>
        </Grid>

e.x

Jason Aller
  • 3,541
  • 28
  • 38
  • 38
Matt126
  • 997
  • 11
  • 25

2 Answers2

1

You might want to try the VisualTreeHelper:

  VisualTreeHelper.GetChildrenCount()
  VisualTreeHelper.GetChild()

http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.visualtreehelper%28v=win.10%29.aspx

0

Thank you, for the answers. I've found a solution for the problem.

IEnumerable<Grid> grids = mainGrid.Children.OfType<Grid>();
            foreach (Grid itemGrid in grids)
            {
                IEnumerable<FrameworkElement> items = itemGrid.Children.OfType<FrameworkElement>();
                foreach (FrameworkElement item in items)
                    {
                        item.Width = 100;
                    }       
            }
Matt126
  • 997
  • 11
  • 25