WPF中MaterialDesign DatePicker文本框悬停色及图标下划线修改问题
修改WPF MaterialDesign DatePicker的下划线与日历图标颜色
要同时修改非聚焦/聚焦状态的下划线和日历图标颜色,你需要补充设置MaterialDesign提供的几个专属附加属性,以下是完整解决方案:
关键属性说明
materialDesign:TextFieldAssist.UnfocusedUnderlineBrush:控制DatePicker未被点击时的下划线颜色materialDesign:TextFieldAssist.ButtonIconBrush:控制日历图标的默认颜色materialDesign:TextFieldAssist.ButtonIconHoverBrush(可选):控制鼠标悬停时的图标颜色materialDesign:TextFieldAssist.ButtonIconPressedBrush(可选):控制图标被点击时的颜色
完整代码示例
<DatePicker materialDesign:HintAssist.Hint="Start Date" Margin="0,25,0,0" <!-- 聚焦状态下划线 --> materialDesign:TextFieldAssist.UnderlineBrush="{StaticResource MainThemeColor3}" <!-- 非聚焦状态下划线 --> materialDesign:TextFieldAssist.UnfocusedUnderlineBrush="{StaticResource MainThemeColor3}" <!-- 默认日历图标颜色 --> materialDesign:TextFieldAssist.ButtonIconBrush="{StaticResource MainThemeColor3}" <!-- 可选:鼠标悬停时图标颜色 --> materialDesign:TextFieldAssist.ButtonIconHoverBrush="{StaticResource secondaryBackColor1}" <!-- 可选:点击时图标颜色 --> materialDesign:TextFieldAssist.ButtonIconPressedBrush="{StaticResource secondaryBackColor2}"> <DatePicker.CalendarStyle> <Style TargetType="Calendar" BasedOn="{StaticResource MaterialDesignCalendarPortrait}"> <Style.Resources> <SolidColorBrush x:Key="PrimaryHueMidBrush" Color="{StaticResource secondaryBackColor1}"/> <SolidColorBrush x:Key="PrimaryHueDarkBrush" Color="{StaticResource secondaryBackColor2}"/> </Style.Resources> </Style> </DatePicker.CalendarStyle> </DatePicker>
原理说明
你之前仅设置了UnderlineBrush,这个属性仅作用于DatePicker聚焦状态的下划线;而UnfocusedUnderlineBrush负责非聚焦时的下划线样式。日历图标属于DatePicker内部的按钮控件,需要通过ButtonIconBrush系列属性单独控制颜色,这些属性是MaterialDesign针对TextField类控件(包括DatePicker)提供的扩展配置项。
内容的提问来源于stack exchange,提问作者Rolang
相关产品推荐
相关产品推荐

