1. 程式人生 > >【 WPF 】重寫Windows窗體樣式

【 WPF 】重寫Windows窗體樣式

1.隱藏預設窗體樣式

Title行新增 AllowsTransparency="True" WindowStyle="None"

<Window x:Class="FeederProject.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:FeederProject"
        mc:Ignorable="d"
        Title="MainWindow" Height="760" Width="1440" AllowsTransparency="True" WindowStyle="None">
    <Window.Resources>

2.建立新的窗體Grid

<Grid x:Name="WindowGrid">
        <Grid.RowDefinitions>
            <RowDefinition Height="38" Name="WindowsTitle"></RowDefinition>
        </Grid.RowDefinitions>
</Grid>

3.使窗體Title可以被滑鼠點選拖動

後臺程式碼中新增

private void Grid_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed)
            {
                DragMove();
            }
        }

4.窗體Title新增功能按鈕(關閉,最大化,隱藏)

功能按鈕樣式

<Style x:Key="BtnWindowStyle" TargetType="Button">
            <Setter Property="Width" Value="30"/>
            <Setter Property="Height" Value="30"/>
            <!--<Setter Property="Margin" Value="50,15"/>-->
            <!--<Setter Property="Foreground" Value="White"/>-->
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border x:Name="border" Padding="0" CornerRadius="2" Background="{TemplateBinding Background}" BorderBrush="LightGray" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
                            <TextBlock x:Name="Block" FontSize="20" Text="{TemplateBinding Content}" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" FontWeight="Bold"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="border" Property="BorderBrush" Value="White"/>
                                <Setter TargetName="border" Property="BorderThickness" Value="1"/>
                            </Trigger>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter TargetName="border" Property="BorderBrush" Value="LightGray"/>
                                <Setter TargetName="Block" Property="Foreground" Value="Black"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

新增功能按鈕

        <Button Content="T" Grid.Column="1" Margin="0,3,110,3" HorizontalAlignment="Right" VerticalAlignment="Center" Style="{StaticResource BtnWindowStyle}" Click="btnT_Click"></Button>
        <Button Content="E" Grid.Column="1" Margin="0,3,75,3" HorizontalAlignment="Right" VerticalAlignment="Center" Style="{StaticResource BtnWindowStyle}" Click="btnE_Click"></Button>
        <Button Content="A" Grid.Column="1"  Margin="0,3,40,3" HorizontalAlignment="Right" VerticalAlignment="Center" Style="{StaticResource BtnWindowStyle}" Click="btnA_Click"></Button>
        <Button Content="M" Grid.Column="1" Margin="0,3,5,3" HorizontalAlignment="Right" VerticalAlignment="Center" Style="{StaticResource BtnWindowStyle}" Click="btnM_Click"></Button>

按鈕功能--後臺新增

關閉視窗

private void btnM_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

最大化視窗

private void btnA_Click(object sender, RoutedEventArgs e)
        {
            WindowState = WindowState.Maximized;
        }

隱藏視窗

private void btnT_Click(object sender, RoutedEventArgs e)
        {
            WindowState = WindowState.Maximized;
        }

5.實際效果

相關推薦

WPF 重寫Windows窗體樣式

1.隱藏預設窗體樣式 Title行新增 AllowsTransparency="True" WindowStyle="None" <Window x:Class="FeederProject.MainWindow" xmlns="http://s

WPF 問題總結-RaidButton修改樣式模板後作用區域的變化

最近工作需要,需要重繪RaidButton控制元件,具體想要達成的的效果是這樣的:   當點選按鈕任意一個地方的時候,按鈕的背景改變。 於是我是這樣對控制元件模板進行修改的: <Style x:Key="raidstyle" TargetType="RadioButton">

WPF三維模型中的“照相機”

聲明 mesh 妹子 .com 看到了 指向 世界 png per WPF 部分支持三維模型,為啥說是部分支持?畢竟 WPF 的側重點還是在應用開發上,雖然也有些遊戲是用 WPF 開發的,不過,老周想啊,如果真要開發遊戲,最好用專門的框架,WPF 應當用於開發應用功能的。不

WPF如何獲取命令行參數

com 頁面 覆蓋 pps 分享 一點 new spa tro 應用程序以 Main 方法為入口點,如果為 Main 方法指定一個 string[] 類型的參數,在程序運行時,這個參數會獲取到傳遞給應用程序的命令行參數。 而 WPF 應用程序比較特殊,因為在VS中包含一些

WPF用三角形網格構建三維圖形

遊戲 輸入 angle 結構 dash bsp 來看 適應 鼠標 雖然WPF只能支持部分三維模型,不過從應用功能開發的角度看,也已經夠用了(非遊戲開發)。WPF 的三維圖形,說得簡單一點,也就兩種而已。 1、把二維對象放到三維空間中,這個應該較為好辦,像 Image 控件

windows平臺上調試vpcs

進行 源代碼 sta win32 sting cygwin clip 源碼 type 1.下載Cygwin32.2.下載vpcs源代碼.3.解壓vpcs源碼,修改Makefile.cygwin文件 以下兩行CFLAGS=-D$(OSTYPE) -D$(CPUTYPE) -D

WPF關於依賴屬性的ValidateValueCallback,PropertyChangedCallback和CoerceValueCallback的執行順序

value read ado args cep img 強制轉換 .cn clas 三個回調對應依賴屬性的驗證過程,改變過程和強制轉換過程。 class Dobj : DependencyObject { //依賴屬性包裝 public int MyPro

WPFMVVM模式的3種command

src handler 因此 初始化 dex ram view ssi 不同 1.DelegateCommand 2.RelayCommand 3.AttachbehaviorCommand 因為MVVM模式適合於WPF和SL,所以這3種模式中也有一些小差異,比如Relay

TomcatUnrecognized Windows Sockets error: 10106: Socket creation failed

.get ces leg lan ror 傳輸協議 local 過程 協議 tomcat8啟動過程中報如下錯誤 30-Nov-2017 22:45:52.892 嚴重 [main] org.apache.catalina.core.StandardServer.awai

MQTTWindows下搭建MQTT服務器

代碼 教程 userdata 圖片 ... 程序 password 命令 pass MQTT簡介 MQ 遙測傳輸 (MQTT) 是輕量級基於代理的發布/訂閱的消息傳輸協議,設計思想是開放、簡單、輕量、易於實現。這些特點使它適用於受限環境。該協議的特點有: 使用發布/訂閱

WPFListbox模板內button點擊選中當前listboxItem

span item man sta href targe comm cte flow 源:stackoverflow --Listbox模板內按鈕點擊命令指定到擋墻vm內命令 Command="{Binding DataContext.PlusCmd,Relativ

WPFMVVM模式的3種command

exceptio 什麽 () rst 響應 接口 too AD event 原文:【WPF】MVVM模式的3種command1.DelegateCommand 2.RelayCommand 3.AttachbehaviorCommand 因為MVVM模式適合於WPF和

Learing-Python0Windows環境下Python2和Python3的安裝

一行 str rip 打開 spa ont exe 分享圖片 tps 一、下載 可以在官網下載最新版本, 也可以在以下鏈接中找想安裝的版本下載下來,這裏以Python3.6和Python2.7為例 https://www.python.org/ftp/python/

WPF添加自定義字體

logs 去掉 不能 dict 根目錄 imp 項目 visual down 原文:【WPF】添加自定義字體需求:在WPF項目中使用幼圓字體。 步驟: 1、首先要有幼圓TTF字體文件。在C:\Windows\Fonts目錄下找,如果系統字體庫中沒有,就上網下一份,如這裏

WPF建立文字字串的路徑PathGeometry

/// <summary> /// 建立文字路徑 /// </summary> /// <param name="word">文字字串</param> /// <para

WPF 獲取螢幕解析度並自適應

double x = SystemParameters.WorkArea.Width;//得到螢幕工作區域寬度 double y = SystemParameters.WorkArea.Height;//得到螢幕工作區域高度 double x1= SystemParameters.Prima

WPFContentControl Style定義與使用出現問題後 -- 引發的思考

一、背景        使用WPF的朋友,大家都很喜歡採用定義控制元件的公共樣式,以便整個框架對該資源的使用,好處就是可以達到程式碼複用、系統風格統一等;       

Python0windows環境下 安裝python3

瞭解Python 首先·····Python是一門解釋性語言,這是他的特點,這讓Python似乎與“高效”無緣。然而你知道嗎,著名的Instagram伺服器就是是用Python+Django搭建的,而且月活使用者超過7億。要知道Python+Django是一個以速度慢著稱的web框架,一定是python的某

Caffe Windows版本的編譯

Caffe Windows版本的編譯   (2014-11-13 14:14:59) 原文地址:http://blog.sina.com.cn/s/blog_52f26d0f0102v6hm.html 電腦太差,僅備份,未驗證

前端設定好CSS樣式動態新增元素會按照樣式顯示

這篇就是簡單記錄下一個小點: 設定好CSS樣式先,然後動態生成元素,元素可以按照CSS樣式顯示,只要對應到相應的規則即可。 <!DOCTYPE html> <html> <head> <title>Grid Layout Tes