WPF Grid动态显示或隐藏一列的一种方法

项目中有一个需求,需要根据用户的设置动态显示一列,研究了一波后,发现,Grid并没有这个功能,于是通过绑定宽度 的方法,实现的需求。。

思路:将需要隐藏的列宽度 绑定到一个属性上,隐藏时就设置宽度为0

写了个Demo,思路是一样的,看看示例效果吧:

下面就粘上xaml和代码喽:

MainWindow.xaml:

<Window x:Class="wpfcore.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:wpfcore" xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"mc:Ignorable="d"Background="LightBlue"UseLayoutRounding="True"FontSize="20"Title="MainWindow" Width="600" Height="400"><Grid><Grid.RowDefinitions><RowDefinition Height="auto"/><RowDefinition Height="*"/></Grid.RowDefinitions><StackPanel Orientation="Horizontal"><Button Content="显示Name列" Click="Button_Click"/><Button Content="显示Age列" Click="Button_Click_1"/><Border Width="20"/><Button Content="隐藏Name列" Click="Button_Click_2"/><Button Content="隐藏Age列" Click="Button_Click_3"/></StackPanel><Grid Grid.Row="1" Margin="5"><Grid.ColumnDefinitions><ColumnDefinition Width="1*"/><ColumnDefinition Width="{Binding NameWidth}"/><ColumnDefinition Width="{Binding AgeWidth}"/><ColumnDefinition Width="1*"/></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition Height="auto"/><RowDefinition Height="auto"/><RowDefinition Height="auto"/><RowDefinition Height="auto"/><RowDefinition Height="auto"/></Grid.RowDefinitions><TextBlock Text="编号" Grid.Row="0" Grid.Column="0"/><TextBlock Text="姓名" Grid.Row="0" Grid.Column="1"/><TextBlock Text="年龄" Grid.Row="0" Grid.Column="2"/><TextBlock Text="爱好" Grid.Row="0" Grid.Column="3"/><TextBlock Text="1" Grid.Row="1" Grid.Column="0"/><TextBlock Text="张三" Grid.Row="1" Grid.Column="1"/><TextBlock Text="18" Grid.Row="1" Grid.Column="2"/><TextBlock Text="玩游戏" Grid.Row="1" Grid.Column="3"/><TextBlock Text="2" Grid.Row="2" Grid.Column="0"/><TextBlock Text="张三" Grid.Row="2" Grid.Column="1"/><TextBlock Text="18" Grid.Row="2" Grid.Column="2"/><TextBlock Text="玩游戏" Grid.Row="2" Grid.Column="3"/><TextBlock Text="3" Grid.Row="3" Grid.Column="0"/><TextBlock Text="张三" Grid.Row="3" Grid.Column="1"/><TextBlock Text="18" Grid.Row="3" Grid.Column="2"/><TextBlock Text="玩游戏" Grid.Row="3" Grid.Column="3"/><TextBlock Text="3" Grid.Row="4" Grid.Column="0"/><TextBlock Text="张三" Grid.Row="4" Grid.Column="1"/><TextBlock Text="18" Grid.Row="4" Grid.Column="2"/><TextBlock Text="玩游戏" Grid.Row="4" Grid.Column="3"/></Grid></Grid>
</Window>

MainWindow.cs:

using System.Windows;
using System.Windows.Media;namespace wpfcore
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();DataContext = this;}public GridLength NameWidth{get { return (GridLength)GetValue(NameWidthProperty); }set { SetValue(NameWidthProperty, value); }}public static readonly DependencyProperty NameWidthProperty =DependencyProperty.Register("NameWidth", typeof(GridLength), typeof(MainWindow), new PropertyMetadata(new GridLength(1,GridUnitType.Star)));public GridLength AgeWidth{get { return (GridLength)GetValue(AgeWidthProperty); }set { SetValue(AgeWidthProperty, value); }}public static readonly DependencyProperty AgeWidthProperty =DependencyProperty.Register("AgeWidth", typeof(GridLength), typeof(MainWindow), new PropertyMetadata(new GridLength(1, GridUnitType.Star)));private void Button_Click(object sender, RoutedEventArgs e){NameWidth = new GridLength(1, GridUnitType.Star);}private void Button_Click_1(object sender, RoutedEventArgs e){AgeWidth = new GridLength(1, GridUnitType.Star);}private void Button_Click_2(object sender, RoutedEventArgs e){NameWidth = new GridLength(0, GridUnitType.Star);}private void Button_Click_3(object sender, RoutedEventArgs e){AgeWidth = new GridLength(0, GridUnitType.Star);}}
}

ok.完成喽

 

如果喜欢,点个赞呗~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.Net Core with 微服务 - Seq 日志聚合

上一次我们介绍并演示了如果使用 Consul 做为我们微服务的注册中心&#xff0c;来实现服务的注册与发现。那么本次我们讲会演示如何做日志聚合。日志聚合比较常用的有 ELK 等&#xff0c;但是这次我想要介绍的是一款比较小众的日志聚合工具 - Seq 。日志聚合日志是我们写程序离…

苹果白屏一直显示苹果_最新消息显示:苹果还要发新品

距离2020年结束已经进入了倒计时阶段&#xff0c;但最新消息显示苹果可能还会在这个最后的时间节点上召开一场新品发布会。今日&#xff0c;有外媒援引一份苹果内部备忘录报道&#xff0c;称苹果通过内部备忘录向服务提供商发送通知&#xff0c;计划在美国太平洋标准时间 12月8…

“探月计划”来袭,美国米德天文望远镜助孩子观月赏月

▲数据汪特别推荐点击上图进入玩酷屋孩子对于未知的世界充满了好奇&#xff0c;尤其是对于月亮&#xff0c;总是有问不完的问题。例如月亮上是怎么样的&#xff1f;怎么很多人说十五的月亮十六圆&#xff1f;月亮有动物吗&#xff1f;不是说有月兔吗&#xff1f;月亮怎么有时是…

为什么async/await方法不能有lock或Monitor

相信有不少朋友知道async/await有lock语法的情况一般都会编译错误&#xff0c;这个时候可以通过Monitor来解决编译错误的问题&#xff1b;虽然这样解决的编译错误但本质问题还是没有解决。其实并不是async/await方法不能用lock或Monitor&#xff0c;而是在lock或Monitor的作用域…

每日一笑 | 程序员和产品经理打架了,怎么办?

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图片来源于网络&#xff0c;侵权删&#xff09;

新建项目EasyUiAutotest,安装Appium-Python-Client

一、前置说明 Appium-Python-Client 是 Appium 的 Python 客户端库&#xff0c;它提供了一系列的类和方法&#xff0c;用于与 Appium 服务器进行通信&#xff0c;并执行各种移动应用测试操作&#xff0c;包括启动应用、模拟用户输入、点击等操作。 二、操作步骤 1. 启动Pych…

VS Code + ML.NET 玩转交互式机器学习

在上一篇文章中&#xff0c;我们介绍了 .NET Interactive Notbook&#xff0c;可以进行代码实时运行和交互式展示。这对于ML.NET来说非常棒&#xff0c;可以运用到许多场景&#xff0c;比如数据探索、绘制数据图表、编制教学课件等。下面&#xff0c;我们就用出租车费预测&…

ts定义数组类型_ts基本数据类型

typescript基础数据类型布尔值 示例代码最基本的数据类型就是简单的true/false值&#xff0c;在JavaScript和TypeScript里叫做boolean(其它语言中也一样)。let a: boolean trueconsole.log(a)let b: boolean falseconsole.log(b)let c: booleanconsole.log(c)执行结果truefal…

神还原女神照片!GAN为百年旧照上色

全世界只有3.14 % 的人关注了数据与算法之美如何把女神的黑白照片变成彩照&#xff1f;今日&#xff0c;数据汪发现新加坡 GovTech 数据科学与人工智能部门在 Medium 上介绍了一个为百年旧照上色的项目。这个项目名为 Colourise.sg&#xff0c;最初是该团队&#xff08;成员包括…

cacti+nagios 整合遇到的问题

cacti安装成功了&#xff0c;下载一个npc插件来套用nagios&#xff0c;nagios要用ndoutils和cacti连接。主要安装ndoutils出现的问题。启动ndoutils时出错&#xff1a;/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg错误提示&#xff1a;Support for th…

谈谈MySQL面试的45个常见问题

前两天&#xff0c;我跟一个面试官聊天&#xff0c;发现一个普遍想象&#xff0c;不少候选人&#xff0c;对数据库的认知&#xff0c;还处在比较基础的阶段&#xff0c;以为会写“增删改查”、做表关联就足够了&#xff0c;那些工作中经常出现的问题&#xff0c;却支支吾吾答不…

TensorFlow的这些骚操作你都知道吗?

TensorFlow Lite 2019 年发展蓝图分为四个关键部分&#xff1a;易用性、性能、优化和可移植性。自 2015 年 11 月 9 号发布之后&#xff0c;TensorFlow 逐渐成为人工智能领域最广泛运用的深度学习框架。那么TensorFlow框架到底是什么&#xff1f;TensorFlow 是一个大规模机器学…

实现图片打乱_疫情过后,是否打乱了你前进的脚步?面对现状,你将如何开展新的征程?...

2020年的这个春节&#xff0c;一场疫情打乱了所有的计划。就在整个城市都躲起来的时候&#xff0c;有一群人却站了出来。他们背对着我们&#xff0c;却直面着生死&#xff0c;他们每一刻都在与时间赛跑&#xff0c;与死神抢人。他们是值得我们尊敬的人&#xff0c;是最敬爱的人…

SystemCenter2012SP1实践(23)私有云的权限设计

SCVMM和SCAC作为微软私有云的两个重要入口&#xff0c;由于私有云的资源是多部门公用的&#xff0c;为了防止权限扩大导致资源浪费和误操作的可能性&#xff0c;我们在企业中部署的时候&#xff0c;需要认真的规划好用户和相应级别管理员的权限设置。我是分隔线本文主要介绍身份…

面向.NET开发人员的Dapr——参考应用程序

目录&#xff1a;面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门Dapr reference applicationDapr 参考应用Earlier in the book, youve learned about the foundational benefits of D…

数据集转换_为什么LSTM看起来那么复杂,以及如何避免时序数据的处理差异和混乱...

LSTM&#xff08;long short term memory&#xff0c;长短期记忆网络&#xff09;是预测时间序列最常用的神经网络模型之一。但是这种神经网络模型相当复杂&#xff0c;需要特定的结构、数据前期处理等操作。当在网上搜寻要学习的代码时&#xff0c;很难将另一个程序员的代码合…

一直被模仿,从未被超越的经典订阅号!

不管你昨天有多优秀&#xff0c;代表不了今天的辉煌&#xff0c;昨天的太阳永远晒不干今天的衣裳&#xff0c;以阳光心态迎接每一天。今天小编就给大家推荐几个越来越优秀的微信公众号希望把快乐和成长带给您长按二维码&#xff0c;选择【识别图中二维码】关注日读好书ID&#…

面向.NET开发人员的Dapr——总结和前景

目录&#xff1a;面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序面向.NET开发人员的Dapr——状态管理面向.NET开发人员的Dapr——发布和订阅面…

每日一笑 | 周一,如何才能保持清醒?

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图片来源于网络&#xff0c;侵权删&#xff09;难怪数据汪每次喝咖啡都没啥用原来是没用对杯子...

查询两个日期间隔天数怎么算_大厂都是怎么用Java8代替SimpleDateFormat?

1 SimpleDateFormat 之坑1.1 格式化1.1.1 案例初始化一个Calendar&#xff0c;设置日期2020年12月29日​日志​这是由于混淆SimpleDateFormat的各种格式化模式&#xff1a;小写y是年大写Y是week year&#xff0c;即所在的周属于哪一年一年第一周的判断方式从getFirstDayOfWeek(…