WPF 自定义可拖动标题栏

要注意,拖拽的地方,需要加背景色,否则 DrageMove 将无效

MainWindows.xaml

复制代码
<Window  x:Class="Report.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:views="clr-namespace:Report.Views" WindowState="Normal" WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen"
                  mc:Ignorable="d" d:DesignWidth="1280" d:DesignHeight="720" Width="780" Height="360">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <!--<ResourceDictionary Source="/VipSoft.Themes;component/Styles/MainWindow.xaml"/>-->
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
    <Border Style="{StaticResource Layout-Border}">
        <DockPanel>
            <DockPanel LastChildFill="False" Dock="Top" Height="40" Background="#1F6AAC"   MouseLeftButtonDown="DockContainer_OnDragMove" >
                <Image Name="LoginLogoImage" Style="{StaticResource Logo-Image}"/>
                <TextBlock  Name="TitleBlock" Style="{StaticResource Layout-Title}"  Text="XX 信息管理系统"></TextBlock>
                <Button DockPanel.Dock="Right"  Style="{StaticResource Button-Close}" ToolTip="关闭"  Click="Close_OnClick"></Button>
                <ToggleButton  DockPanel.Dock="Right"  Style="{StaticResource Button-Max}" Name="TopMaxButton"  Click="MaxButton_Click" ></ToggleButton>
                <Button  DockPanel.Dock="Right" Style="{StaticResource Button-Min}" ToolTip="最小化"  Click="MinButton_Click" ></Button>
                <Button  DockPanel.Dock="Right" Style="{StaticResource Button-Top-Bar}" Content="&#xe78c;" ToolTip="帮助"></Button>
                <Button  DockPanel.Dock="Right" Style="{StaticResource Button-Top-Bar}" Content="&#xe7a3;" ToolTip="设置"></Button>
            </DockPanel>
            <DockPanel>
                <views:Navigate  Padding="5"  Background="#F1F2F3" Width="70" x:Name="NavigateMenu" MenuClick="Navigate_OnMenuClick"></views:Navigate>
                <Border BorderBrush="#D1D3D5" BorderThickness="0.9,0,0,0" Padding="2" Background="#F1F2F3" >
                    <ContentControl Name="MainContent" ></ContentControl>
                </Border>
            </DockPanel>
        </DockPanel>
    </Border>
</Window>
复制代码

MainWindows.xaml.cs

复制代码
private void DockContainer_OnDragMove(object sender, MouseButtonEventArgs e)
{
    switch (e.ClickCount)
    {
        // Background="White"  事件所在的容器,不加这个属性,不能拖拽
        case 1://单击
            { 
                this.DragMove();
                break;
            }
        case 2://双击
            {
                MaxButton_Click(null, null);
                TopMaxButton.IsChecked = WindowState == WindowState.Maximized;
                break;
            }
    }
}

private void MaxButton_Click(object sender, RoutedEventArgs e)
{
    WindowState = WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized;
}

private void MinButton_Click(object sender, RoutedEventArgs e)
{
    WindowState = WindowState.Minimized;
}

 
private void Close_OnClick(object sender, RoutedEventArgs e)
{ 
    MessageBoxResult vr = System.Windows.MessageBox.Show("确定要退出应用吗", "操作提示",MessageBoxButton.YesNo, MessageBoxImage.Question);
    if (vr == MessageBoxResult.OK) // 如果是确定,就执行下面代码,记得换上自己的代码喔
    {
        Close();
        System.Windows.Application.Current.Shutdown();
    }
}
复制代码

 

 

posted @   VipSoft  阅读(631)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2021-09-28 compilation.templatesPlugin is not a function
2020-09-28 Intellij idea 生成带注释的get/set
2019-09-28 resources-plugin-2.6.pom.part.lock (没有那个文件或目录)
2019-09-28 Starting Jenkins bash: /usr/bin/java: 没有那个文件或目录
2014-09-28 C# Dictionary通过value获取对应的key值
点击右上角即可分享
微信分享提示