大挪耗

wpf无边框(无顶部白边)

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="444" Width="586"
        WindowStyle="None" 

       >
    <WindowChrome.WindowChrome>
        <WindowChrome GlassFrameThickness="1" 
                      ResizeBorderThickness="6" 
                      CaptionHeight="30" 
                      CornerRadius="0"/>
    </WindowChrome.WindowChrome>

    <Window.Resources>
        <Style x:Key="TitleBarButtonStyle" TargetType="Button">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="Width" Value="45"/>
            <Setter Property="Height" Value="30"/>
            <Setter Property="Foreground" Value="#333333"/>
            <Setter Property="WindowChrome.IsHitTestVisibleInChrome" Value="True"/>

            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border x:Name="border" Background="{TemplateBinding Background}" BorderThickness="0">
                            <ContentPresenter HorizontalAlignment="Center" 
                                      VerticalAlignment="Center"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>


            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="#E5E5E5"/>
                </Trigger>
            </Style.Triggers>
        </Style>

        <Style x:Key="CloseButtonStyle" TargetType="Button" BasedOn="{StaticResource TitleBarButtonStyle}">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="#E81123"/>
                    <Setter Property="Foreground" Value="White"/>
                </Trigger>
            </Style.Triggers>
        </Style>

    </Window.Resources>

    <Grid>
        <Grid.Style>
            <Style TargetType="Grid">
                <Setter Property="Margin" Value="0"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window}}" Value="Maximized">
                        <Setter Property="Margin" Value="6"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Grid.Style>
        
        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <Grid Grid.Row="0" Background="#F3F3F3">
            <TextBlock Text="我的无边框窗口" VerticalAlignment="Center" Margin="15,0,0,0" Foreground="#333333" FontWeight="SemiBold"/>

            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">

                <Button x:Name="BtnTopmost" Content="📌" Style="{StaticResource TitleBarButtonStyle}" Click="TopmostButton_Click" ToolTip="窗口置顶"/>

                <Button Content="─" Style="{StaticResource TitleBarButtonStyle}" Click="MinimizeButton_Click"/>

                <Button x:Name="BtnMaximize" Content="🗖" Style="{StaticResource TitleBarButtonStyle}" Click="MaximizeButton_Click"/>

                <Button Content="✕" Style="{StaticResource CloseButtonStyle}" Click="CloseButton_Click"/>

            </StackPanel>
        </Grid>

        <Grid Grid.Row="1">
            <TextBlock Text="控制功能已全部就绪!" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="18" Foreground="#666666"/>
        </Grid>
    </Grid>

</Window>

NET10.0,后端代码实现:

using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();


            // 监听窗口状态改变事件(比如用户双击标题栏最大化时,我们也需要同步更新按钮图标)
            StateChanged += MainWindow_StateChanged;
        }
        // 1. 置顶 / 取消置顶
        private void TopmostButton_Click(object sender, RoutedEventArgs e)
        {
            // 切换置顶状态
            this.Topmost = !this.Topmost;

            // 根据状态修改按钮背景色或提示,给用户正向反馈
            if (this.Topmost)
            {
                BtnTopmost.Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(218, 218, 218));
                BtnTopmost.ToolTip = "取消置顶";
            }
            else
            {
                BtnTopmost.Background = System.Windows.Media.Brushes.Transparent;
                BtnTopmost.ToolTip = "窗口置顶";
            }
        }

        // 2. 最小化
        private void MinimizeButton_Click(object sender, RoutedEventArgs e)
        {
            this.WindowState = WindowState.Minimized;
        }

        // 3. 最大化 / 还原
        private void MaximizeButton_Click(object sender, RoutedEventArgs e)
        {
            if (this.WindowState == WindowState.Maximized)
            {
                this.WindowState = WindowState.Normal;
            }
            else
            {
                this.WindowState = WindowState.Maximized;
            }
        }

        // 4. 关闭窗口
        private void CloseButton_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        // 自动同步:当用户双击标题栏放大/缩小窗口时,同步更新最大化按钮的文本图标
        private void MainWindow_StateChanged(object sender, System.EventArgs e)
        {
            if (this.WindowState == WindowState.Maximized)
            {
                BtnMaximize.Content = "🗗"; // 还原图标
            }
            else
            {
                BtnMaximize.Content = "🗖"; // 最大化图标
            }
        }


    }
}

效果图:


已发布

分类

可以收藏大挪耗一下。下载麻烦点城通网盘,站长保证下载速度,不会限速的,放心点就是了;分卷,安卓下载为txt:程序下载为url,不会下载参考不会下载。如果你想让本站活的久一点,请直接捐助

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注