InfoBar控件Message属性FontSize设置不生效问题咨询
InfoBar设置FontSize不生效的解决方案
直接在InfoBar控件上设置FontSize属性不会改变Message和Title的字体大小,原因是InfoBar内部的标题和消息文本控件使用了内置的固定样式(如InfoBarTitleTextBlockStyle、InfoBarMessageTextBlockStyle),这些样式优先级高于外层控件的FontSize设置。
以下是两种可行的解决方法:
方法一:自定义文本样式并绑定
通过继承内置样式,修改字体大小后绑定到InfoBar的对应属性:
<Page.Resources> <!-- 自定义标题文本样式 --> <Style TargetType="TextBlock" x:Key="CustomInfoBarTitleStyle" BasedOn="{StaticResource InfoBarTitleTextBlockStyle}"> <Setter Property="FontSize" Value="50"/> </Style> <!-- 自定义消息文本样式 --> <Style TargetType="TextBlock" x:Key="CustomInfoBarMessageStyle" BasedOn="{StaticResource InfoBarMessageTextBlockStyle}"> <Setter Property="FontSize" Value="50"/> </Style> </Page.Resources> <InfoBar Severity="Warning" IsOpen="True" Title="Data Requests" Message="This is a test. FontSize at 50" TitleStyle="{StaticResource CustomInfoBarTitleStyle}" MessageStyle="{StaticResource CustomInfoBarMessageStyle}"/>
方法二:修改InfoBar的控件模板
提取InfoBar的默认控件模板,将内部文本控件的FontSize绑定到模板的FontSize属性,这样外层设置的FontSize就能传递到内部:
<Style TargetType="InfoBar"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="InfoBar"> <!-- 保留默认模板的其他结构,仅修改以下两个TextBlock的FontSize --> <TextBlock x:Name="TitleTextBlock" FontSize="{TemplateBinding FontSize}" Text="{TemplateBinding Title}" Style="{StaticResource InfoBarTitleTextBlockStyle}"/> <TextBlock x:Name="MessageTextBlock" FontSize="{TemplateBinding FontSize}" Text="{TemplateBinding Message}" Style="{StaticResource InfoBarMessageTextBlockStyle}"/> <!-- 其余模板代码省略 --> </ControlTemplate> </Setter.Value> </Setter> </Style>
方法一适合仅修改字体大小的轻量场景,方法二更适合需要深度自定义InfoBar布局的情况。
内容的提问来源于stack exchange,提问作者dressnature
相关产品推荐
相关产品推荐

