如何设置窗口标题属性?包含标题FontFamily修改、标题栏移除相关问题
窗口标题
FontFamily设置不生效的解决方案 不生效原因
WPF默认窗口的标题栏由操作系统直接渲染,不属于WPF自身的视觉控件树,因此直接给Window节点设置FontFamily属性仅对窗口内部的内容区域生效,无法修改系统标题栏的文字样式。
解决步骤
你需要通过自定义标题栏的方式修改标题字体,操作如下:
- 先移除系统自带的标题栏,给
Window节点添加以下属性:
<Window ... WindowStyle="None" <!-- 如需窗口背景透明/圆角效果可添加下面属性,不需要可省略 --> AllowsTransparency="True" <!-- 按需设置窗口是否可调整大小 --> ResizeMode="CanResize" >
- 在窗口布局中自定义标题栏区域,直接指定你需要的字体即可,示例代码:
<Grid> <!-- 自定义标题栏区域 --> <Grid Height="32" VerticalAlignment="Top" Background="LightGray" MouseLeftButtonDown="TitleBar_MouseLeftButtonDown"> <TextBlock Text="窗口标题" FontFamily="EngraversGothic BT" VerticalAlignment="Center" Margin="12,0,0,0" /> <!-- 可自行添加最小化、最大化、关闭等控制按钮 --> </Grid> <!-- 窗口其他内容区域,顶部预留32px避免被标题栏遮挡 --> <Grid Margin="0,32,0,0"> <!-- 此处放置你的页面内容 --> </Grid> </Grid>
- 后台添加拖动窗口的逻辑,匹配自定义标题栏的鼠标事件:
private void TitleBar_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { DragMove(); }
完全移除标题栏的实现方法
如果不需要自定义标题栏,仅需完全移除系统标题栏,只需要给Window节点设置WindowStyle="None"属性即可,该属性会直接移除系统提供的标题栏、控制按钮和默认边框。
如需保留窗口调整大小的能力,可搭配ResizeMode属性使用,可选值包括:
NoResize:窗口固定尺寸,不可调整CanResize:可自由调整窗口尺寸CanResizeWithGrip:窗口右下角显示尺寸调整抓柄
内容的提问来源于stack exchange,提问作者IAbstract
相关产品推荐
相关产品推荐

