黑马程序员技术交流社区

标题: WPF中关于grid布局里的控件 [打印本页]

作者: 陈行    时间: 2013-5-5 17:37
标题: WPF中关于grid布局里的控件
  1.    RowDefinition rr;
  2.             ColumnDefinition cc;
  3. for (int i = 0; i < 6; i++)
  4.             {
  5.                
  6.                
  7.                     cc = new ColumnDefinition();
  8.                     gr.ColumnDefinitions.Add(cc);
  9.                
  10.                 rr = new RowDefinition();
  11.                 gr.RowDefinitions.Add(rr);
  12.             }
复制代码
现在不就生成了一个5*6的grid布局吗  假设里面有很多控件  我现在怎么修改布局里控件的属性  有Grid类的方法可以访问控件吗 ???
作者: 郎吉祥    时间: 2013-5-5 18:21
不知道你为什么要在Xaml.cs里写代码,你完全可以在xaml中写代码啊。就是窗口下边那个。
<Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
    </Grid>
你想怎么加就怎么加,想怎么设怎么设
作者: 陈行    时间: 2013-5-5 19:30
郎吉祥 发表于 2013-5-5 18:21
不知道你为什么要在Xaml.cs里写代码,你完全可以在xaml中写代码啊。就是窗口下边那个。

        

假如我要分成几千个行 列  这样就太累了把  在cs里就一个循环搞定了  
作者: 郎吉祥    时间: 2013-5-5 19:52
淡.。 发表于 2013-5-5 19:30
假如我要分成几千个行 列  这样就太累了把  在cs里就一个循环搞定了

讲究实用性。几千行你还能看见东西?最多能有20行就算你的网页够丰富了。页面布局你放这么多有啥用,控件都看不见
作者: 陈行    时间: 2013-5-5 22:35
郎吉祥 发表于 2013-5-5 19:52
讲究实用性。几千行你还能看见东西?最多能有20行就算你的网页够丰富了。页面布局你放这么多有啥用,控件 ...

~ 就算是多掌握点知识把  多知道点没有坏处
作者: 崔宏奎    时间: 2013-5-6 18:43
本帖最后由 崔宏奎 于 2013-5-6 18:45 编辑

从VS里找到了答案:

第一:Grid类继承自Panel类。
  1.     public class Grid : Panel, IAddChild
复制代码
第二:通过Panel类中的Children可以获得元素的对象,就可以操作啦~~
  1. public abstract class Panel : FrameworkElement, IAddChild
  2. {
  3.         //
  4.         // 摘要:
  5.         //     获取此 System.Windows.Controls.Panel 的子元素的 System.Windows.Controls.UIElementCollection。
  6.         //
  7.         // 返回结果:
  8.         //     一个 System.Windows.Controls.UIElementCollection。默认值为空的 System.Windows.Controls.UIElementCollection。
  9.         [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
  10.         public UIElementCollection Children { get; }
  11. }
复制代码
第三步:再查看这个Children的类型, UIElementCollection ,得知这是一个类,可以通过索引来访问 ,又实现了 IEnumerable接口,就可以通过foreach来遍历啦~~
  1.     // 摘要:
  2.     //     表示 System.Windows.UIElement 子元素的有序集合。
  3.     public class UIElementCollection : IList, ICollection, IEnumerable
  4.     {
  5.         
  6.         // 摘要:
  7.         //     获取或设置存储在 System.Windows.Controls.UIElementCollection 的从零开始的索引位置的 System.Windows.UIElement。
  8.         //
  9.         // 参数:
  10.         //   index:
  11.         //     System.Windows.UIElement 的索引位置。
  12.         //
  13.         // 返回结果:
  14.         //     位于指定的 index 位置的 System.Windows.UIElement。
  15.         public virtual UIElement this[int index] { get; set; }
  16.     }
复制代码
实验结果:




代码胡乱写的,就不上传啦哈~~





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2