更改 WinUI 3 上的标题栏图标

Change Titlebar icon on WinUI 3

提问人:Pedro Augusto 提问时间:9/25/2023 最后编辑:Brian RasmussenPedro Augusto 更新时间:10/5/2023 访问量:96

问:

我正在开发一个应用程序来了解该工具的工作原理,我需要更改标题栏图标,但是当我设置图标时,它具有白色背景而不是透明背景。

[当前标题栏]
enter image description here

我该如何改变这一点??

我的代码如下所示:

MainWindow.xaml.cs:

public MainWindow()
{
    this.InitializeComponent();

    var buttonThickness = new Thickness();
    var listThickness = new Thickness();
    var emptyTasksBlockTextThickness = new Thickness();

    emptyTasksBlockTextThickness.Top = 12;
    buttonThickness.Left = 16;
    listThickness.Top = 12;

    myButton.Margin = buttonThickness;
    tasks.Margin = listThickness;
    emptyTasksBlockText.Margin = emptyTasksBlockTextThickness;

    this.AppWindow.TitleBar.BackgroundColor = Windows.UI.Color.FromArgb(0, 31, 41, 55);
    this.AppWindow.TitleBar.ButtonBackgroundColor = Windows.UI.Color.FromArgb(0, 31, 41, 55);
    // this.AppWindow.TitleBar.ForegroundColor = Windows.UI.Color.FromArgb(0, 31, 41, 55);

    this.AppWindow.Title = "ToDo Application";
    this.Activated += MainWindow_Activated;
}

private void MainWindow_Activated(object sender, Microsoft.UI.Xaml.WindowActivatedEventArgs args)
{
    string icon = Path.Combine(
        Package.Current.InstalledLocation.Path,
        "Icon.ico"
    );


    this.AppWindow.SetIcon(icon);
}

MainWindow.xaml:

<?xml version="1.0" encoding="utf-8"?>
<Window
    x:Class="videodownloader.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:videodownloader"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Bottom">
            <TextBox 
            x:Name="textInput" 
            Width="500" 
            KeyDown="TextBlock_KeyDown" 
            PlaceholderText="Type your task here" 
            Header="Enter with task" 
         />
            <local:CustomButton
            PointerEntered="myButton_PointerEntered" 
            PointerExited="myButton_PointerExited" 
            x:Name="myButton"
            VerticalAlignment="Bottom" 
            Click="myButton_Click"
            FontFamily="Segoe UI"
            FontWeight="SemiBold"
            
            CornerRadius="4"
         >
                Add Task
            </local:CustomButton>
        </StackPanel>
        <TextBlock x:Name="emptyTasksBlockText" HorizontalAlignment="Center">Nenhuma tarefa adicionada ainda!</TextBlock>
        <ListView x:Name="tasks" ItemsSource="{x:Bind ItemResource}">
            <ListView.ItemTemplate>
                <DataTemplate x:DataType="local:TaskItem">
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                        <TextBlock Text="{x:Bind name, Mode=OneTime}" VerticalAlignment="Center" HorizontalAlignment="Left" />
                        <Button Click="removeItem_Click" HorizontalAlignment="Right" DataContext="{Binding name}">Remover</Button>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackPanel>
</Window>

我想使图标的背景与标题栏的颜色相同

C# .NET Windows WinUI-3 ICO

评论

2赞 Simon Mourier 9/25/2023
确保.ico使用透明度(RGB+Alpha 通道)。
0赞 YangXiaoPo-MSFT 10/11/2023
没有问题。WinUI-Gallery 还自定义标题栏,而其 PNG 不使用透明度。

答:

0赞 YangXiaoPo-MSFT #1

正如@SimonMourier所说,确保您的来源使用透明度。WinUI3_CustomCaption示例工作正常。当然,它的来源使用透明度。查看 https://github.com/castorix/WinUI3_CustomCaption/blob/f4e49d3885b64ea415649e1b2ac9990542e3c690/Assets/Butterfly.png