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. BZOJ5196: [Usaco2018 Feb]Taming the Herd(DP暴力)

    5196: [Usaco2018 Feb]Taming the Herd Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 78  Solved: 71[ ...

  2. BZOJ4292 PA2015 Równanie 【暴力水题】

    BZOJ4292 PA2015 Równanie Description 对于一个正整数n,定义f(n)为它十进制下每一位数字的平方的和.现在给定三个正整数k,a,b,请求出满足a<=n< ...

  3. BZOJ3196 Tyvj1730 二逼平衡树 【树套树】 【线段树套treap】

    BZOJ3196 Tyvj1730 二逼平衡树 Description 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名 ...

  4. 20179223《Linux内核原理与分析》第九周学习笔记

    视频学习 进程调度与进程调度的时机分析 不同类型的进程有不同的调度需求 第一种分类: --I/O-bound:1.频繁的进行I/O:2.通常会花费很多时间等待I/O操作的完成 --CPU-bound: ...

  5. Windows10安装MySQL8.0

    1.到MySQL官网下载安装包:https://dev.mysql.com/downloads/mysql/:选择8.0版本: 2.将下载好的安装包(mysql-8.0.12-winx64 .zip) ...

  6. Linux驱动程序接口

    §1. Linux驱动程序接口 系统调用是操作系统内核与应用程序之间的接口,设备驱动程序则是操作系统内核与机器硬件的接口.几乎所有的系统操作最终映射到物理设备,除了CPU.内存和少数其它设备,所有的设 ...

  7. 从hello world 说程序运行机制

    转自:http://www.cnblogs.com/yanlingyin/archive/2012/03/05/2379199.html 开篇 学习任何一门编程语言,都会从hello world 开始 ...

  8. kong 安装

    1. yum 参考信息 https://bintray.com/kong/kong-community-edition-rpm $ sudo yum install epel-release $ su ...

  9. 国外牛人的五个Kubernetes学习建议

    现在云中存在的许多系统都是建立在基于虚拟机,虚拟磁盘等物理概念的抽象基础之上的,”Heptio的联合创始人兼首席技术官兼Kubernetes在Google的原始开发人员之一的Joe Beda说. “K ...

  10. AT命令控制上网 PDP

    1. AT+CGATT=1 (Attach or detach from GPRS service, GPRS 附着状态) 说的简单点,这一步就是让SGSN (服务GPRS节点,你可以把它理解成与基站 ...