基于WPF封裝一個可擴(kuò)展的Window
前言
WPF中Window相信大家都很熟悉,有時我們有一些自定義需求默認(rèn)Window是無法滿足的,比如在標(biāo)題欄上放一些自己東西,這個時候我們就需要寫一個自己的Window,實現(xiàn)起來也很簡單,只要給Window設(shè)置一個WindowChrome.WindowChrome附加屬性就可以實現(xiàn),WindowChrome 可以讓你自定義窗口的非工作區(qū)的外觀和行為。非工作區(qū)就是窗口的標(biāo)題欄和邊框,通常由操作系統(tǒng)繪制和管理。WindowChrome 可以讓你將 WPF 的內(nèi)容擴(kuò)展到非工作區(qū),同時保留一些系統(tǒng)的功能和行為,比如調(diào)整大小,移動,最大化,最小化等。
一、示例代碼
1.1 基本使用
<local:CustomWindow x:Class="CustomWindowDemo.Window1" 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:local="clr-namespace:CustomWindowDemo" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="Window1" Width="800" Height="450" Icon="/logo.png" mc:Ignorable="d"> <Grid /> </local:CustomWindow>
1.2 自定義標(biāo)題欄高度
<local:CustomWindow x:Class="CustomWindowDemo.Window1" 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:local="clr-namespace:CustomWindowDemo" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="Window1" Width="800" Height="450" CaptionHeight="35" Icon="/logo.png" mc:Ignorable="d"> <Grid /> </local:CustomWindow>
1.3 自定義標(biāo)題欄顏色
<local:CustomWindow x:Class="CustomWindowDemo.Window1" 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:local="clr-namespace:CustomWindowDemo" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="Window1" Width="800" Height="450" CaptionBackground="Blue" Icon="/logo.png" mc:Ignorable="d"> <Grid /> </local:CustomWindow>
1.4 自定義標(biāo)題欄內(nèi)容
<local:CustomWindow x:Class="CustomWindowDemo.Window1" 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:local="clr-namespace:CustomWindowDemo" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="Window1" Width="800" Height="450" Icon="/logo.png" mc:Ignorable="d"> <local:CustomWindow.CaptionBarContent> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Button Margin="5" Padding="2" VerticalAlignment="Center" Background="Transparent" BorderThickness="0" WindowChrome.IsHitTestVisibleInChrome="True"> <StackPanel Orientation="Horizontal"> <Polygon VerticalAlignment="Center" Fill="White" Points="0,6 6,0 6,12" /> <TextBlock Margin="4,0,0,0" VerticalAlignment="Center" FontSize="14" Foreground="White" Text="返回" /> </StackPanel> </Button> <TextBlock Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="14" Foreground="White" Text="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=Title}" /> <Button Grid.Column="2" Margin="5" Padding="2" VerticalAlignment="Center" Background="Transparent" BorderThickness="0" FontSize="14" Foreground="White" WindowChrome.IsHitTestVisibleInChrome="True"> <StackPanel Orientation="Horizontal"> <TextBlock Margin="0,0,4,0" VerticalAlignment="Center" Text="Admin" /> <Polyline VerticalAlignment="Center" Points="0,0 5,5 10,0" Stroke="White" StrokeThickness="2" /> </StackPanel> </Button> </Grid> </local:CustomWindow.CaptionBarContent> <Grid /> </local:CustomWindow>
二、綜合案例
到此這篇關(guān)于基于WPF封裝一個可擴(kuò)展的Window的文章就介紹到這了,更多相關(guān)WPF封裝可擴(kuò)展Window內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# WPF 建立無邊框(標(biāo)題欄)的登錄窗口的示例
這篇文章主要介紹了C# WPF 建立無邊框(標(biāo)題欄)的登錄窗口的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2020-12-12WinForm實現(xiàn)最小化到系統(tǒng)托盤方法實例詳解
這篇文章主要介紹了WinForm實現(xiàn)最小化到系統(tǒng)托盤方法,實例分析了C#中實現(xiàn)WinForm最小化到系統(tǒng)托盤所需的相關(guān)控件與使用技巧,需要的朋友可以參考下2015-05-05