WPF Grid 用 C# 代码后台设置

运行环境:Window7 64bit,.NetFramework4.61,C# 6.0; 编者:乌龙哈里 2017-02-21


参考:

章节:

  • 动态增加行列及控件放置
  • 设置Grid的行列尺寸

正文:

一、动态增加行列及控件放置

要用到
Grid.SetRow(控件名, 行序号)
Grid.SetColumn(控件名, 列序号),
另一种写法是:
控件实例.SetValue(Grid.RowProperty, 行序号)
控件实例.SetValue(Grid.ColumnProperty, 列序号)

示例1演示如何增减行和放置控件:

示例1:

public partial class MainWindow : Window
{
    private int rowCount = 0;
    private int colCount = 0;
    private int itemCount = 0;

public MainWindow()
    {
        InitializeComponent();
        grdShow.ColumnDefinitions.Add(new ColumnDefinition());
        grdShow.ColumnDefinitions.Add(new ColumnDefinition());
        grdShow.ColumnDefinitions.Add(new ColumnDefinition());
        grdShow.RowDefinitions.Add(new RowDefinition());
    }

private void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        itemCount++;
        TextBlock tbk = new TextBlock() { Text = $"Item {itemCount.ToString()}" };
        if (colCount % 3 == 0)
        {
            grdShow.RowDefinitions.Add(new RowDefinition());
            colCount = 0;
            rowCount++;
        }
        tbk.SetValue(Grid.RowProperty, rowCount);
        tbk.SetValue(Grid.ColumnProperty, colCount++);
        
        //Grid.SetRow(tbk, rowCount);
        //Grid.SetColumn(tbk, colCount++);

grdShow.Children.Add(tbk);
    }

private void btnDelete_Click(object sender, RoutedEventArgs e)
    {
        itemCount = grdShow.Children.Count;
        if (itemCount > 0)
        {
            grdShow.Children.RemoveRange((itemCount-1) / 3 *3,(itemCount-1) %3 +1);
            grdShow.RowDefinitions.RemoveAt((itemCount-1) / 3);
        }
    }
}

结果如下图:

二、设置Grid的行列尺寸

设置 Grid 行列的尺寸要用到 GridLength 结构。以下示例是设置3行,第1行是固定高度24,第2行是动态高度 1*,第3行也是动态高度 2*,我这里所谓的动态高度是指随着窗口尺寸的变化而变化的尺寸。

示例3:

grdShow.RowDefinitions.Add(new RowDefinition { Height = new GridLength(24)} );
grdShow.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
grdShow.RowDefinitions.Add(new RowDefinition {Height=new GridLength(2,GridUnitType.Star)});

Button btn1 = new Button {Content="Fix",Margin=new Thickness(2)};
Grid.SetRow(btn1, 0);
Button btn2 = new Button {Content="1*", Margin = new Thickness(2) };
Grid.SetRow(btn2, 1);
Button btn3 = new Button {Content="2*", Margin = new Thickness(2) };
Grid.SetRow(btn3, 2);

grdShow.Children.Add(btn1);
grdShow.Children.Add(btn2);
grdShow.Children.Add(btn3);

运行结果如下图,第2行的 Button 是第3行的 Button 高度的1/2,而且随着窗口变化而变化。

WPF Grid 用 C# 代码后台设置的更多相关文章

  1. WPF后台设置xaml控件的样式System.Windows.Style

    WPF后台设置xaml控件的样式System.Windows.Style 摘-自 :感谢 作者: IT小兵   http://3w.suchso.com/projecteac-tual/wpf-zhi ...

  2. VS编程,编辑WPF过程中,点击设计器中界面某一控件,在XAML中高亮突出显示相应的控件代码的设置方法。

    原文:VS编程,编辑WPF过程中,点击设计器中界面某一控件,在XAML中高亮突出显示相应的控件代码的设置方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net ...

  3. Extjs 4.2 Grid增删改及后台交互(Java)

    上次发了Easyui Datagrid的增删改查的使用学习记录后一直想整理下基于Extjs4.2的Grid学习使用记录.苦于抽不出时间,一直拖到现在.不得不说,Extjs确实很强大,新版的Neptun ...

  4. WPF中,如何将绑定源设置到单件实例

    原文:WPF中,如何将绑定源设置到单件实例  WPF中,如何将绑定源设置到单件实例                                       周银辉 大概两个月前,曾有位朋友问我:如 ...

  5. 工作记录--WPF自定义控件,实现一个可设置编辑模式的TextBox

    原文:工作记录--WPF自定义控件,实现一个可设置编辑模式的TextBox 1. 背景 因为最近在使用wpf开发桌面端应用,在查看页面需要把TextBox和Combox等控件设置为只读的.原本是个很简 ...

  6. C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式

    C#/WPF/WinForm/.NET程序代码实现软件程序开机自动启动的两种常用方法的示例与源码下载带详细注释-源码代码-注册表方式-启动目录快捷方式 C#实现自动启动的方法-两种方法 源码下载地址: ...

  7. wpf 手指触摸图片放大缩小 设置放大缩小值

    xaml代码: <Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/w ...

  8. 转--Android如何在java代码中设置margin

    ========  3 在Java代码里设置button的margin(外边距)? 1.获取按钮的LayoutParams LinearLayout.LayoutParams layoutParams ...

  9. 详解Spring中的CharacterEncodingFilter--forceEncoding为true在java代码中设置失效--html设置编码无效

    在项目中有很多让人头疼的问题,其中,编码问题位列其一,那么在Spring框架中是如何解决从页面传来的字符串的编码问题的呢?下面我们来看看Spring框架给我们提供过滤器CharacterEncodin ...

随机推荐

  1. eclipse如何通过git把项目上传到码云上

    转载:原文链接:https://www.cnblogs.com/yixtx/p/8310311.html 1.eclipse安装git插件 具体我也做过,因为我下载的eclipse版本以及由git插件 ...

  2. 每天一个linux命令(磁盘):【转载】du 命令

    Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能 ...

  3. 每天一个linux命令(磁盘):【转载】df 命令

    linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [文件] 2.命 ...

  4. Codeforces 932E Team work 【组合计数+斯特林数】

    Codeforces 932E Team work You have a team of N people. For a particular task, you can pick any non-e ...

  5. python 访问权限和下划线

    Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据 1.__xx__(两边两个下划线):是特列方法像__init__之类的,是python的内嵌的方法在特定的时候会被 ...

  6. c++ queue 用法

    最重要的是: queue 和 stack 都没有迭代器!!! 1. push 队列中由于是先进先出,push即在队尾插入一个元素. 2. pop 将队列中最靠前位置的元素拿掉,和push都是没有返回值 ...

  7. DiscuzX 3. 3搭建和学习

    Discuz!全局变量$_G详解 http://jingyan.baidu.com/article/cb5d610516048c005c2fe0c8.html UCenter uc_user_synl ...

  8. bzoj 1670 [Usaco2006 Oct]Building the Moat护城河的挖掘——凸包

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1670 用叉积判断.注意两端的平行于 y 轴的. #include<cstdio> ...

  9. 1.Python3关于文件的操作

    1.写了一个简单的Demo,就是向txt文本写入内容,最初代码如下: file = open("D:/Users/nancy/python.txt","wb") ...

  10. winform Textbox模糊搜索实现下拉显示+提示文字

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...