【问题标题】:Change size of all items from a Grid更改网格中所有项目的大小
【发布时间】:2014-07-24 13:17:39
【问题描述】:

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

这是我的解决方法:

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>

【问题讨论】:

  • 你的代码中的 item1 是什么?
  • 哦,是的。那是一个错误。我会纠正这个。
  • 好的,现在请解释一下您目前的方法有什么问题?
  • 有 serval exeptions 并且 itemGrid 没有“Children”的命名空间。
  • 什么是主网格?它不在您的 XAML 中。

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


【解决方案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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-02-13
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多