创建一个显示所有预定义系统颜色的ListBox
原文 Creating a ListBox that Shows All Predefined System Colors
该System.Windows.SystemColors类包含了一系列揭露当前预定义系统颜色静态属性。这些物业有三胞胎。对于每个系统颜色Xxx,有XxxBrush,XxxBrushKey和XxxColor属性。
我们可以通过构建一组画笔然后将集合绑定到ListBox,轻松创建一个小的WPF应用程序来显示当前的系统颜色。
这是最终结果:

下面是我用来创建列表的代码。
我从一个包含命名系统颜色及其Brush的实用程序类开始:
public class ColorInfo
{
public string Name { get; set; }
public Brush Brush { get; set; } public ColorInfo(string name, Brush brush)
{
Name = name;
Brush = brush;
}
}
接下来,我将一个集合添加到我的主Window类,它将存储一个ColorInfo对象列表:
private ObservableCollection<ColorInfo> allSystemColors;
public ObservableCollection<ColorInfo> AllSystemColors
{
get { return allSystemColors; }
}
在窗口的构造函数中,我使用反射填充此列表。请注意,我遍历SystemColors类中的所有属性,只抓取名称以“Brush”结尾的那些属性。
allSystemColors = new ObservableCollection<ColorInfo>(); Type scType = typeof(SystemColors);
foreach (PropertyInfo pinfo in scType.GetProperties())
{
if (pinfo.Name.EndsWith("Brush"))
allSystemColors.Add(new ColorInfo(pinfo.Name.Remove(pinfo.Name.Length - ),
(Brush)pinfo.GetValue(null, null)));
}
剩下的就是将此集合绑定到ListBox。我们在XAML中这样做:
<ListBox ItemsSource="{Binding ElementName=mainWindow, Path=AllSystemColors}"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Auto" >
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<Rectangle Fill="{Binding Path=Brush}" Stroke="Black" Margin="5" StrokeThickness="1" Height="74" Width="120"/>
<TextBlock Text="{Binding Path=Name}" HorizontalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
瞧!
创建一个显示所有预定义系统颜色的ListBox的更多相关文章
- 创建一个显示所有预定义WPF颜色的ListBox
原文 Creating a ListBox that Shows All Predefined WPF Colors 在WPF中,您可以使用Colors类访问一系列预定义颜色,这些颜色定义为Color ...
- Colours–颜色库,包含100种预定义的颜色和方法
简介 Colours–颜色库,包含各种100种预定义的颜色和方法,可以简化颜色相关的开发工作. 项目主页: Colours 最新示例: 点击下载 快速入门 安装 通过Cocoapods安装 pod ' ...
- 五十九、SAP中常用预定义系统变量
一.SAP中常用预定义系统变量 内容如下: 二.系统变量定义在结构SYST里,我们打开SE38 三.在代码编辑器输入SYST变量 四.双击SYST,来到这个系统结构,里面有很多系统变量 五.我们随便写 ...
- 利用BitLocker和vhdx创建一个有加密的Win10系统
如果电脑不支持TPM加密BitLocker,就无法对系统盘进行全盘加密. 可以采用一个变通的方法:创建一个vhdx,将这个虚拟磁盘进行BitLocker加密,然后在这个盘里安装操作系统,最后把vhdx ...
- 【Unity Shaders】Reflecting Your World —— 在Unity3D中创建一个简单的动态Cubemap系统
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- Shell 变量详解教程之位置变量与预定义变量。
Shell 变量分为3部分,分别是用户自定义变量.位置变量和预定义变量. 一. 自定义变量 那么,什么是变量呢?简单的说,就是让某一个特定字符串代表不固定的内容,用户定义的变量是最普通的Shell ...
- Shell 变量详解教程之位置变量与预定义变量
Shell 变量分为3部分,分别是用户自定义变量.位置变量和预定义变量. 一. 自定义变量 那么,什么是变量呢?简单的说,就是让某一个特定字符串代表不固定的内容,用户定义的变量是最普通的Shell ...
- 科学计算三维可视化---TVTK入门(创建和显示三维对象)
一:创建一个基本的三维对象 (一)长方体操作 traits:就是TVTK对象的属性 (1)对象属性操作 >>> from tvtk.api import tvtk >>& ...
- [Winform][C#]获取系统颜色预定义颜色和现有字体集
转自: http://zhidao.baidu.com/link?url=ozY7tJRNBYHUsImE6jn1psqc8owib7MWcDMEmZw48q8iD9Hz9MWgnQQcBDO0VYO ...
随机推荐
- 【Codeforces Round #439 (Div. 2) C】The Intriguing Obsession
[链接] 链接 [题意] 给你3种颜色的点. 每种颜色分别a,b,c个. 现在让你在这些点之间加边. 使得,同种颜色的点之间,要么不连通,要么连通,且最短路至少为3 边是无向边. 让你输出方案数 [题 ...
- Python安装后,Python IDLE等的位置
安装后,Python的目录下有如下文件:
- 细说CSS伪类和伪元素
原文 简书原文:https://www.jianshu.com/p/eae56b7fe7fe 大纲 1.伪元素 2.伪类元素 3.伪元素和伪类元素的区别 4.伪类和伪元素的使用 1.伪元素 伪元素在D ...
- 【2005】N只猴子选大王
Time Limit: 3 second Memory Limit: 2 MB N只猴子选大王.选举办法如下:从头到尾1.2.3报数,凡报3的退出,余下的从尾到头1.2.3报数,凡报3退出:余下的又从 ...
- SAP ABAP编程 字符串加密-MD5_CALCULATE_HASH_FOR_CHAR
DATA: str1 TYPE c LENGTH 12 VALUE 'zxcv', str2 TYPE c LENGTH 32, str3 TYPE c LENGTH 32. ...
- Intent七大属性之总结 分类: H1_ANDROID 2013-11-10 09:41 1074人阅读 评论(0) 收藏
参考<疯狂android讲义>第5章 1.Intent 用于封装程序的"调用意图",不管想启动一个Acitivity.Service还是BroadcastReceive ...
- MSYS2是对MSYS的一个独立的重写,是基于当前的Cygwin和MinGW-w64重写的,以同原生的Windows软件有更好的交互性为目的
MSYS2的官网:http://sourceforge.net/projects/msys2/ 官网的描述: Description MSYS2 is an independent rewrite o ...
- Oracle列加密
加密函数 create or replace function encrypt_des(p_text varchar2, p_key varchar2) return varchar2 isv_tex ...
- ios开发图片轮播器以及定时器小问题
一:图片轮播器效果如图:能实现自动轮播,到最后一页时,轮播回来,可以实现拖拽滚动 二:代码: #import "ViewController.h" ; @interface Vie ...
- AngularJS之forEach
angular.forEach 描述: 循环对obj对象的每个元素调用iterator, obj对象可以是一个Object或一个Array. Iterator函数调用方法: iterator( ...