首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于PresentationFramework.Aero覆盖WPF TextBox中的默认样式

基于PresentationFramework.Aero覆盖WPF TextBox中的默认样式,是指在Windows Presentation Foundation (WPF)应用程序中,通过使用PresentationFramework.Aero样式库来自定义TextBox控件的外观和行为。

在WPF中,TextBox是一个常用的控件,用于接收用户输入。然而,默认的样式可能不总是符合应用程序的需求。因此,可以通过覆盖默认样式来自定义TextBox的外观和行为。

PresentationFramework.Aero是WPF应用程序中常用的样式库,它提供了一组预定义的样式和控件模板,可以用于自定义应用程序的外观和行为。要基于PresentationFramework.Aero覆盖WPF TextBox中的默认样式,可以使用以下步骤:

  1. 首先,在应用程序的资源中引入PresentationFramework.Aero样式库。
代码语言:<Application.Resources>
复制
   <ResourceDictionary>
       <ResourceDictionary.MergedDictionaries>
           <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
  1. 然后,在应用程序的资源中定义一个新的样式,以覆盖默认的TextBox样式。
代码语言:<Style TargetType="{x:Type TextBox}">
复制

<Setter Property="Template">

代码语言:txt
复制
   <Setter.Value>
代码语言:txt
复制
       <ControlTemplate TargetType="{x:Type TextBox}">
代码语言:txt
复制
            <Grid>
代码语言:txt
复制
               <VisualStateManager.VisualStateGroups>
代码语言:txt
复制
                   <VisualStateGroup x:Name="CommonStates">
代码语言:txt
复制
                       <VisualState x:Name="Normal" />
代码语言:txt
复制
                       <VisualState x:Name="MouseOver" />
代码语言:txt
复制
                       <VisualState x:Name="Disabled">
代码语言:txt
复制
                           <Storyboard>
代码语言:txt
复制
                               <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="PART_ContentHost">
代码语言:txt
复制
                                    <EasingColorKeyFrame KeyTime="0" Value="{DynamicResource {x:Static SystemColors.GrayTextColorKey}}" />
代码语言:txt
复制
                                </ColorAnimationUsingKeyFrames>
代码语言:txt
复制
                            </Storyboard>
代码语言:txt
复制
                        </VisualState>
代码语言:txt
复制
                       <VisualState x:Name="ReadOnly">
代码语言:txt
复制
                           <Storyboard>
代码语言:txt
复制
                               <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground).(SolidColorBrush.Color)" Storyboard.TargetName="PART_ContentHost">
代码语言:txt
复制
                                    <EasingColorKeyFrame KeyTime="0" Value="{DynamicResource {x:Static SystemColors.ControlDarkColorKey}}" />
代码语言:txt
复制
                                </ColorAnimationUsingKeyFrames>
代码语言:txt
复制
                            </Storyboard>
代码语言:txt
复制
                        </VisualState>
代码语言:txt
复制
                    </VisualStateGroup>
代码语言:txt
复制
                   <VisualStateGroup x:Name="FocusStates">
代码语言:txt
复制
                       <VisualState x:Name="Focused">
代码语言:txt
复制
                           <Storyboard>
代码语言:txt
复制
                               <DoubleAnimation Duration="00:00:00.1" To="1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="FocusVisualElement" />
代码语言:txt
复制
                            </Storyboard>
代码语言:txt
复制
                        </VisualState>
代码语言:txt
复制
                       <VisualState x:Name="Unfocused" />
代码语言:txt
复制
                    </VisualStateGroup>
代码语言:txt
复制
                   <VisualStateGroup x:Name="ValidationStates">
代码语言:txt
复制
                       <VisualState x:Name="Valid" />
代码语言:txt
复制
                       <VisualState x:Name="InvalidUnfocused">
代码语言:txt
复制
                           <Storyboard>
代码语言:txt
复制
                               <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement">
代码语言:txt
复制
                                    <DiscreteObjectKeyFrame KeyTime="0">
代码语言:txt
复制
                                        <DiscreteObjectKeyFrame.Value>
代码语言:txt
复制
                                           <Visibility>Visible</Visibility>
代码语言:txt
复制
                                        </DiscreteObjectKeyFrame.Value>
代码语言:txt
复制
                                    </DiscreteObjectKeyFrame>
代码语言:txt
复制
                                </ObjectAnimationUsingKeyFrames>
代码语言:txt
复制
                            </Storyboard>
代码语言:txt
复制
                        </VisualState>
代码语言:txt
复制
                       <VisualState x:Name="InvalidFocused">
代码语言:txt
复制
                           <Storyboard>
代码语言:txt
复制
                               <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="ValidationErrorElement">
代码语言:txt
复制
                                    <DiscreteObjectKeyFrame KeyTime="0">
代码语言:txt
复制
                                        <DiscreteObjectKeyFrame.Value>
代码语言:txt
复制
                                           <Visibility>Visible</Visibility>
代码语言:txt
复制
                                        </DiscreteObjectKeyFrame.Value>
代码语言:txt
复制
                                    </DiscreteObjectKeyFrame>
代码语言:txt
复制
                                </ObjectAnimationUsingKeyFrames>
代码语言:txt
复制
                               <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen" Storyboard.TargetName="validationTooltip">
代码语言:txt
复制
                                    <DiscreteObjectKeyFrame KeyTime="0">
代码语言:txt
复制
                                        <DiscreteObjectKeyFrame.Value>
代码语言:txt
复制
                                           <System:Boolean>True</System:Boolean>
代码语言:txt
复制
                                        </DiscreteObjectKeyFrame.Value>
代码语言:txt
复制
                                    </DiscreteObjectKeyFrame>
代码语言:txt
复制
                                </ObjectAnimationUsingKeyFrames>
代码语言:txt
复制
                            </Storyboard>
代码语言:txt
复制
                        </VisualState>
代码语言:txt
复制
                    </VisualStateGroup>
代码语言:txt
复制
                </VisualStateManager.VisualStateGroups>
代码语言:txt
复制
               <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="1" Opacity="1" Padding="{TemplateBinding Padding}">
代码语言:txt
复制
                   <ScrollViewer x:Name="PART_ContentHost" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" />
代码语言:txt
复制
                </Border>
代码语言:txt
复制
               <Border x:Name="DisabledVisualElement" BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" BorderThickness="{TemplateBinding BorderThickness}" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" CornerRadius="1" Opacity="0" />
代码语言:txt
复制
               <Border x:Name="FocusVisualElement" BorderBrush="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="1" Margin="1" Opacity="0" />
代码语言:txt
复制
               <Border x:Name="ValidationErrorElement" BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="1" Visibility="Hidden">
代码语言:txt
复制
                    <ToolTipService.ToolTip>
代码语言:txt
复制
                        <ToolTip x:Name="validationTooltip" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" Placement
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

默认WPF样式在哪里

我们使用WPF控件时,.NET framework会为我们提供一些默认样式 ---- 一开始我们会认为这个是依赖属性默认值。...我们神奇发现,返回值是null 那么不是依赖属性默认值就是来自于Style咯 我们试试 FrameworkElement.StyleProperty.GetMetadata(typeof(Button...实际上WPF控件在应用程序找不到相应样式时,会从系统获取样式。...(例如resentationFramework.Aero)而这个选择由系统主题决定 而最后,如果这些主题都没有找到,那么程序会在自身themes/generic.xaml获取默认样式。...欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

67810

WPF 已知问题 Separator 无法应用 ContextMenu 定义默认样式

本文记录一个 WPF 已知问题,在 ContextMenu Resources 里定义 Separator 默认样式,在 ContextMenu 里面的 Separator 将应用不上,或者说不会找到此默认样式...ImplicitReference 优先级,那就采用默认 SeparatorStyleKey 作为样式属性。...如果没有在代码里面明确给定资源 Key 内容,那以上代码 vs 就是 ImplicitReference 优先级,于是样式就被修改为默认主题样式 这是在 WPF 里面特别给定代码,也许是大佬们为了修复某个我理解不了坑...原因是 Separator 在很多个地方都会使用,如果在 Menu 里,也采用默认继承关系,将会让 Separator 样式打架。毕竟在 Menu 里面的,是期望比较特殊一些。...于是就限制了,如果是放在 Menu 里面,应该采用是 MenuItem.SeparatorStyleKey 样式才会作为默认继承样式,如下面代码 <Window x:Class="TestContextMenuSeparatorStyle.MainWindow

75820

【愚公系列】2023年09月 WPF控件专题 XAML介绍

欢迎 点赞✍评论⭐收藏 前言 WPF(Windows Presentation Foundation)是微软推出一种基于.net框架图形用户界面技术,它使用XAML(eXtensible Application...XAML是一种基于XML标记语言,用于描述WPF应用程序用户界面、控件、布局、样式和数据绑定。...在WPF,XAML被用来构建UI,它可以和C#、VB.NET等编程语言混合使用。开发人员可以使用XAML定义UI元素和布局,然后通过编写代码来处理界面逻辑和数据操作。...由于XAML是基于XML文本文件,因此可以轻松地进行版本控制和协作开发。 XAML是WPF应用程序核心语言,掌握XAML是WPF开发人员必备技能之一。...语法和编译相关clr命名空间 区分:如果应用时,不带前缀,就来自于默认命名空间,否则,就来自于带前缀命名空间。

36300

【愚公系列】2023年11月 WPF控件专题 2023秋招WPF高频面试题

WPF初级篇133.简单描述下WPF样式WPF 样式工作方式与 CSS 样式类似在 CSS ,我们为控件定义样式,并在应用程序任何需要地方重用相同样式WPF 样式允许定义属性并可在应用程序重用方式相同...WPF 控件 textbox 、 button 、 grids 以及可以从 WPF 工具箱想到任何内容都继承自FrameworkElement类。...样式可以在控件上显式设置,也可以应用于所有特定类型。 控件模板可以通过样式设置或在控件上显式设置以更改其显示方式。 所有控件都有嵌入在 .net wpf 程序集中默认模板(和样式)。...WinForms 通常用于开发业务应用程序,而 WPF 通常用于创建更多基于最终用户软件、应用程序等。 19.如何理解MVVM View 和 ViewModel?...29.WPF样式和资源有什么区别?资源用于针对多种类型控件属性,而样式一次只能为一种类型控件定义属性。 我们还可以将不同样式定义为一种公共资源一部分。 这是一个开放式问题。

42222

WPF自定义控件创建

WPF自定义控件创建 本文简单介绍一下WPF自定义控件开发。 首先,我们打开VisualStudio创建一个WPF自定义控件库,如下图: ? 然后,我们可以看到创建解决方案如下: ?...在解决方案,我们看到了一个Themes文件夹和一个CS文件。 其中CS文件,就是我们需要编写自定义控件,里面的类继承了Control类;而Themes则存放该控件样式。...即,WPF自定义控件,是通过样式给我们编辑控件类披上外衣而形成。 下面,我们来编写一个简单时间控件。...这样,我们就可以在KibaDateTime控件样式,用使用TextBox属性,进行绑定了。 然后,我们在控件类里定义三个依赖属性,小时、分钟、秒;之后,我们会把这个三个属性,绑定到样式。...我们需要做就是将样式内容添加进去。 我们在Border,添加TextBox,然后进行小时、分钟、秒绑定,这里要用Binding来绑定。

2K20

WPF:无法对元素“XXX”设置 Name 特性值“YYY”。“XXX”在元素“ZZZ”范围内,在另一范围内定义它时,已注册了名称。

WPF:无法对元素“XXX”设置 Name 特性值“YYY”。“XXX”在元素“ZZZ”范围内,在另一范围内定义它时,已注册了名称。...我把出现错误 XAML 简化后大约是这样,XXX 是 TextBox,YYY 是 RenameTextBox,而 ZZZ 是 walterlv:Foo。...至于以上 XAML 代码我看到用是 来写样式,是因为踩到了当控件用另一个坑: 所有在控件 XAML 设置 Content 属性都将被使用时覆盖。...将 里定义所有样式全部改到 /Themes/Generic.xaml 文件。...如果你不清楚如何编写一个自定义控件,那么请直接在 Visual Studio 基于 WPF 自定义控件创建文件,你会发现 Visual Studio 为你写好了注释。

2.9K20

【愚公系列】2023年10月 WPF控件专题 Groupbox控件详解

欢迎 点赞✍评论⭐收藏前言WPF控件是Windows Presentation Foundation(WPF基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。...WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见标准用户界面元素。...它们被放置在一个StackPanel,用于控制它们布局和对齐方式。使用GroupBox控件可以使复杂界面更加清晰和易于阅读,并且可以通过样式和模板来增强其可定制性。...1.属性介绍WPFGroupbox控件属性有:Header:用于设置GroupBox标题文本。...2.常用场景WPFGroupbox控件常用于以下场景:分组:当需要将某些相关控件进行分组时,可以使用Groupbox控件,将它们放在一个框架,给用户提供更好可视化效果。

77400

解决htmlol ul li默认往左偏移样式问题

在HTML,有序列表(ol)和无序列表(ul)元素通常会默认有一定内边距(padding)和外边距(margin),这是由浏览器默认样式表所定义。...这些内边距和外边距可能导致列表向左偏移,从而出现左边超出情况。...具体来说,ol和ul元素默认样式表通常会定义: padding-left:列表项左侧内边距,默认为 40px(不同浏览器可能略有不同)。...margin-left:列表元素左侧外边距,默认为 0。 因此,当你在HTML中使用ol或ul元素时,它们左边可能会默认超出。...解决 /* 去掉有序列表和无序列表默认样式 */ ol, ul { margin: 0; padding: 0; list-style-type: none; } /* 为有序列表添加数字编号

2.3K30

【愚公系列】2023年09月 WPF控件专题 Calendar控件详解

欢迎 点赞✍评论⭐收藏 前言 WPF控件是Windows Presentation Foundation(WPF基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。...WPF控件可以分为两类:原生控件和自定义控件。 原生控件是由Microsoft提供内置控件,如Button、TextBox、Label、ComboBox等。...一、Calendar控件详解 WPFCalendar控件是一个显示日期和日期范围UI控件。它可以让用户选择一个特定日期,并且可以用于在应用程序显示日期相关信息。...1.属性介绍 WPFCalendar控件具有以下属性: SelectedDate:获取或设置日历控件所选日期。 DisplayDate:获取或设置日历控件当前显示日期。...Language:获取或设置日历控件语言。 CalendarSelectionMode:获取或设置指定日历控件可以选择日期范围。 CalendarStyle:获取或设置日历控件样式

56811

从ContentControl开始入门自定义控件

前言 我去年写过一个在UWP自定义控件系列博客,大部分经验都可以用在WPF(只有一点小区别)。...DefaultStyleKey是用于查找控件样式键,没有这句代码控件就找不到默认样式。...通过Setter改变默认值 通常从父控件继承而来属性很少在构造函数设置默认值,而是在DefaultStyleSetter设置默认值。...在自定义控件添加属性时应尽量使用依赖属性(有些只读属性可以使用CLR属性),因为只有依赖属性才可以作为BindingTarget。WPF创建依赖属性可以做到很复杂,而再简单也要好几行代码。...依赖属性默认值可以在注册依赖属性时在PropertyMetadata设置,通常为属性类型默认值,也可以在DefaultStyleSetter设置,不推荐在构造函数设置。

3.6K40

WPF依赖属性(wpf 依赖属性)

大家好,又见面了,我是你们朋友全栈君。 一、什么是依赖属性 依赖属性就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值。依赖属性可支持WPF样式设置、数据绑定、继承、动画及默认值。...希望可在样式设置属性。 2. 希望属性支持数据绑定。 3. 希望可使用动态资源引用设置属性。 4. 希望从元素树父元素自动继承属性值。 5. 希望属性可进行动画处理。 6....希望属性系统在属性系统、环境或用户执行操作或者读取并使用样式更改了属性以前值时报告。 7....,显示默认前景色。...: 4、程序运行效果: 在TextBox里面输入正确颜色值,前景色会显示为当前输入颜色: 在TextBox里面输入错误颜色值,前景色会显示为默认颜色: 发布者:全栈程序员栈长,转载请注明出处

2K20

Winafl基于插桩覆盖率反馈原理

最近winafl增加支持对Intel PT支持,但是只支持x64,且覆盖率计算不全,比如条件跳转等,所以它现在还是不如直接用插桩去hook方式来得准确完整,这里主要想分析也是基于 DynamoRIO...插桩覆盖率反馈原理。...64K哈希表,位于共享内存,方便target进程与fuzzer进程之间共享,对应伪代码如下: ?...)是否发生变化来实现 覆盖信息传递原理 先在fuzzer进程先创建命名管道,其中fuzzer_id为随机值: ?...来记录覆盖率情况,如果发现新执行路径,就将样本放入队列目录,用于后续文件变异,以提高代码覆盖率; 目标进程执行到目标函数后,会调用pre_fuzz_handler来存储上下文信息,包括寄存器和运行参数

1.9K20

【愚公系列】2023年09月 WPF控件专题 DatePicker控件详解

欢迎 点赞✍评论⭐收藏 前言 WPF控件是Windows Presentation Foundation(WPF基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。...WPF控件可以分为两类:原生控件和自定义控件。 原生控件是由Microsoft提供内置控件,如Button、TextBox、Label、ComboBox等。...1.属性介绍 WPFDatePicker控件具有以下属性: SelectedDate:获取或设置选定日期。 DisplayDate:获取或设置显示日期。...FirstDayOfWeek:获取或设置一周第一天。 CalendarStyle:获取或设置应用于控件日历样式。 IsDropDownOpen:获取或设置一个值,该值指示下拉式日历是否显示。...DatePicker控件在WPF可用于各种需要用户选择日期场景,可以大大提高用户体验和软件易用性。 3.具体案例 <!

62420

WPF 自定义 TextBoxView Margin 大小

WPF TextBox 里有 TextBoxView 用来渲染 TextBox 内容,但是在 TextBox 里面的 TextBoxView 是不能直接设置而且默认 Margin 是 2,0,2,0...如何自定义这个值 先来写一个简单程序告诉大家这个问题,创建一个空白 WPF 程序,在里面添加一个 TextBox 设置 TextBox 居中 <TextBox Width="100"...从 WPF 源代码可以看到 TextBoxView 是 internal 也就是无法直接修改 Style 在构造函数设置了 Margin 值,这里 CaretElement.BidiCaretIndicatorWidth...就是 2 这就是默认大小 ?...欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

1.3K20

【愚公系列】2023年10月 WPF控件专题 DataGrid控件详解

欢迎 点赞✍评论⭐收藏前言WPF控件是Windows Presentation Foundation(WPF基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。...WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见标准用户界面元素。...一、DataGrid控件详解WPFDataGrid是一个非常强大和灵活控件,它可用于展示和编辑数据。...DataGrid还有许多其他属性和方法,可以根据需求进行使用。1.属性介绍WPFDataGrid控件常见属性如下:AutoGenerateColumns:是否自动生成列,默认为true。...自定义样式和模板:DataGrid控件可以根据用户需要进行自定义样式和模板,可自由修改表格外观和布局,使数据展示更加美观和易于阅读。

84700
领券