摘要 所有控件都继承自System。Windows。Control类,该类添加了一小部分基本的基础结构:设置控件内容对齐方式的能力设置Tab键顺序的能力支持绘制背景、前景和边框支持格式化文本内容和尺寸 正文 背景画刷和前景画刷 在WPF中,背景和前景分别使用Background和Foreground属性设置这两个区域(但非内容)的颜色。这些属性使用的是更强大的对象:Brush对象。该对象为填充背景和前景内容提供了灵活性,可使用单一颜色(用SolidColorBrush画刷)或更特殊的颜色(如使用LinearGraidientBrush或TileBrush画刷)填充背景和前景。 控件包括两个属性Background和Foreground属性,这两个属性使用Brush对象。刷子对象的派生类包括SolidColorBrush、LinearGradientBrush、和TileBrush类。GridGrid。RowDefinitionsRowDefinitionHeightautoRowDefinitionRowDefinitionHeightautoRowDefinitionGrid。RowDefinitionsButtonx:Namebtn1ContentButton1Margin10ButtonButtonx:Namebtn2ContentButton2Margin10Grid。Row1ButtonGridprivatevoidinitBackColor(){this。btn1。BackgroundnewLinearGradientBrush(newGradientStopCollection(){newGradientStop(Colors。Red,0。2),newGradientStop(Colors。Blue,0。2),newGradientStop(Colors。Green,0。6)});this。btn1。ForegroundnewSolidColorBrush(Colors。Red);this。btn2。BackgroundnewSolidColorBrush(Color。FromArgb(255,255,0,0));颜色透明度} 字体FontFamily:字体的种类,好比宋体、黑体等FontSize:字体的大小FontStyle:字体的显示风格,好比斜体、艺术体等FontWeight:字体的粗细FontStrech:字体被拉伸的程度 调用字体或大小TextBlockx:NametxtGrid。Row2Margin10FontFamilyImpactFontSize90thisistestTextBlocktxt。FontFamilynewFontFamily(Gadugi);txt。FontSize36; 试图使用TechnicalItalic字体,但如果该字体不存在,就使用Arial或Corbel字体:ButtonFontFamilyTechnicalItalic,Arial,CorbelGrid。Row6AButtonButton 字体粗细FontWeight 字体粗细 usWeightClass Thin 100hrExtraLight UltraLight 200hrLight 300hrNormal Regular 400hrMedium 500hrDemiBold SemiBold 600hrBold 700hrExtraBold UltraBold 800hrBlack Heavy 900hrExtraBlack UltraBlack 950TextBlockx:Nametxt1Grid。Row3FontWeightBoldHelloWorldTextBlocktxt1。FontWeightFontWeights。B 文本装饰和排版TextDecorations Baseline 指定一个基线TextDecoration。 OverLine 指定一个上划线TextDecoration。 Strikethrough 指定一个删除线TextDecoration。 Underline 指定一个下划线TextDecoration。TextBlockx:Nametxt2Grid。Row4TextDecorationsBaselineClickMeTextBlocktxt2。TextDecorationsnewTextDecorationCollection(){TextDecorations。Underline,TextDecorations。Strikethrough}; 字体样式(斜体)FontStyleTextBlockx:Nametxt3Grid。Row5FontStyleObliqueClickMeTextBlock Fontstyle Description Normal 默认 Italic 斜体 Oblique 倾斜 遍历一下系统的所有字体privatevoidshowfonts(){foreach(FontFamilyiteminFonts。SystemFontFamilies){txt3。Textitem。SourceSystem。Environment。NewL}} 字体嵌入 处理不常见字体的另一种选择是在应用成功需中嵌入字体。通过嵌入字体,应用程序就永远不会出现找不到所需字体这一问题。嵌入过程非常简单。首先向应用程序添加字体文件(通常是具有。ttf扩展名得文件),并将BuildAction选项设置为Resource(为设置该属性,可在VisualStudio的SolutionExplorer中选择字体文件,并在Properties窗口中改变它的BuildAction属性)。StackPanelMargin10ButtonContent未来荧黑寒蝉高黑Namebtn2FontFamily。寒蝉高黑体ButtonListBoxx:NamelsFontHeight200SelectionChangedlsFontSelectionChangedListBoxTextBlockFontSize20TextOptions。TextFormattingModeDisplayText相比于思源黑体,未来荧黑的造型更加简明现代Nametxt1CursorCrossTextBlockStackPanelforeach(variteminFonts。SystemFontFamilies){lsFont。Items。Add(item);}privatevoidlsFontSelectionChanged(objectsender,SelectionChangedEventArgse){txt1。FontFamilylsFont。SelectedItemasFontF} TextFormattingMode IdealWPF4之前的模式 Display新的模式,可以使字体显示更清晰 一般将TextFormattingMode设置为Display,可以提高字体显示的清晰度 TextFormattingMode属性仅仅是针对小尺寸文本的解决方案,记住这一点很重要。如果为更大的文本(超过15点的文本)使用该属性,文本将不会同样清晰,间隔将不会同样均衡,并且字体将不会被同样准确呈现。而且如果结合旋转、缩放和改变外观的变换使用文本,应当总是使用WPF的标准文本显示模式。因为针对显示文本的GDI风格的优化是在所有变换之前应用的。一旦应用变换,结果将不再对齐到像素边界,文本的显示将变得模糊不清。 鼠标光标 鼠标光标的常见做用是显示目前程序的运行状态,经过控件的Cursor属性来设置鼠标光标的形态。 对于任何应用程序而言,一个常见任务是调整鼠标光标以指示当应用程序正处于繁忙状态或指示不同控件的工作方式。可为任何元素使用Cursor属性以设备鼠标指针,该属性继承自FrameworkElement类。 可以通过System。Windwos。Input。Cursor对象来表示每个光标。获取Cursor对象的最简易方法是使用Cursors类的静态属性,它们包含了所有标准的Windows鼠标光标,如沙漏光标、手庄光标、调整尺寸的箭头光标等。this。CursorCursors。WTextBlockCursorHelpHelloCursorsTextBlock