Winui3内容扩展到标题栏

本文介绍了如何在Winui3Gallery中修改导航栏和标题栏的背景颜色,确保它们一致。通过设置静态资源,可以将标题栏背景设为透明,解决右上角按钮不可见或样式不匹配的问题。在MainWindow.xaml和MainWindow.xaml.cs文件中进行相应代码配置,可以实现标题栏的自定义,并确保在页面跳转时标题仍然可见。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果

Winui3 Gallery中导航栏左侧和上方标题栏背景颜色相同,上方标题栏可以自定义:
在这里插入图片描述

代码:

App.xaml

<StaticResource x:Key="WindowCaptionBackground" ResourceKey="SystemControlTransparentBrush" />
<StaticResource x:Key="WindowCaptionBackgroundDisabled" ResourceKey="SystemControlTransparentBrush" />

将右上角按键的背景色设置为透明。如果不设置,会导致程序右上方三个按钮不可见或者跟title中其他元素颜色不同,或者不可点击等问题。

MainWindow.xaml

<Grid>
   <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Border x:Name="AppTitleBar" Height="32" VerticalAlignment="Top" Grid.Row="0">
        <StackPanel Orientation="Horizontal">
            <Image Source="Images/fileManager.png"
               HorizontalAlignment="Left"
               Width="16" Height="16"
               Margin="20,0"/>
            <TextBlock x:Name="AppTitleTextBlock" Text="SoftWare"
                   TextWrapping="NoWrap"
                   Style="{StaticResource CaptionTextBlockStyle}" 
                   VerticalAlignment="Center" Margin="0" />
        </StackPanel>
    </Border>
    <Frame x:Name="frame" Grid.Row="1"></Frame>
</Grid>

如果代码全写在MainWindow中,也可以不设置Grid.Row,直接把Border标签写上,然后再写其它前端元素即可,因为我把代码全写在了page界面中,需要从MainWindow跳转,如果不定义两行,frame.navigate指代的是整个页面,会导致title不可见。

MainWindow.xaml.cs

public MainWindow()
{
    this.InitializeComponent();
    ExtendsContentIntoTitleBar = true;
    SetTitleBar(AppTitleBar);
    frame.Navigate(typeof(MainPage), null);
}

参考

WinUI 3 踩坑记:第一个窗口
官方------标题栏自定义
Winui3 Gallery

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值