D23_05_改变形状窗口的尺寸(自定义窗体大小改变)
<Window x:Class="demo.ModernWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="ModernWindow" Height="300" Width="300" AllowsTransparency="True" WindowStyle="None" ResizeMode="CanResizeWithGrip" Background="Transparent"> <Border Width="Auto" Height="Auto" Name="windowFrame" BorderBrush="#395984" BorderThickness="1" CornerRadius="0,20,30,40" > <Border.Background> <LinearGradientBrush > <GradientBrush.GradientStops> <GradientStopCollection> <GradientStop Color="#E7EBF7" Offset="0.0"/> <GradientStop Color="#CEE3FF" Offset="0.5"/> </GradientStopCollection> </GradientBrush.GradientStops> </LinearGradientBrush> </Border.Background> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <TextBlock Text="Title Bar" Margin="1" Padding="5" MouseLeftButtonDown="titleBar_MouseLeftButtonDown"></TextBlock> <Grid Background="#B5CBEF" Grid.Row="1"> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White" FontSize="20">Content Goes Here</TextBlock> <Button VerticalAlignment="Top" HorizontalAlignment="Center" Padding="10" Grid.Row="1" Click="cmdClose_Click">Close</Button> </Grid> <TextBlock HorizontalAlignment="Center" Grid.Row="2" Text="Footer" Margin="1,10,1,1" Padding="5"></TextBlock> <Rectangle Grid.RowSpan="3" Cursor="SizeWE" Fill="Transparent" Width="5" VerticalAlignment="Stretch" HorizontalAlignment="Right" MouseLeftButtonDown="window_initateWiden" MouseLeftButtonUp="window_endWiden" MouseMove="window_Widen"> </Rectangle> </Grid> </Border> </Window>
ModernWindow
using System; using System.Collections.Generic; using System.Linq; 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.Shapes; namespace demo { /// <summary> /// ModernWindow.xaml 的交互逻辑 /// </summary> public partial class ModernWindow : Window { public ModernWindow() { InitializeComponent(); } bool isWiden = false; private void window_initateWiden(object sender, System.Windows.Input.MouseEventArgs e) { isWiden = true; } private void window_Widen(object sender,System.Windows.Input.MouseEventArgs e) { Rectangle rect=(Rectangle)sender; if(isWiden) { rect.CaptureMouse(); double newWidth = e.GetPosition(this).X + 5; if (newWidth > 0) this.Width = newWidth; } } private void window_endWiden(object sender,System.Windows.Input.MouseEventArgs e) { isWiden=false; Rectangle rect=(Rectangle)sender; rect.ReleaseMouseCapture(); } private void cmdClose_Click(object sender,RoutedEventArgs e) { this.Close(); } private void titleBar_MouseLeftButtonDown(object sender,MouseButtonEventArgs e) { this.DragMove(); } } }