更改网格中所有项目的大小

时间:2014-07-24 13:17:39

标签: c# windows-phone-8.1 uielement win-universal-app

我尝试更改几个网格中所有项目的宽度,这些网格也在网格中。这些项目是文本框,复选框,滑块,按钮等。

以下是我的解决方案:

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

这是一个例子,了解我的意思。

<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

的问候, 克里斯蒂安

2 个答案:

答案 0 :(得分:1)

您可能想尝试使用VisualTreeHelper:

  VisualTreeHelper.GetChildrenCount()
  VisualTreeHelper.GetChild()

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

答案 1 :(得分:0)

谢谢你的回答。我找到了解决问题的方法。

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;
                    }       
            }