下面是C#WPF建立无边框(标题栏)的登录窗口的完整攻略,包含两条示例。
1. 在XAML中设置窗口样式
我们可以在XAML文件中设置窗口的样式。首先,我们需要设置窗口的ResizeMode属性为NoResize,这将禁用窗口的缩放功能。接着,我们可以设置窗口Chrome样式为None,这将清除窗口的默认边框,而且我们需要手动添加窗口的标题栏和关闭按钮。
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
WindowStyle="None" ResizeMode="NoResize">
<!--添加一个Grid容器-->
<Grid>
<!--添加窗口的标题栏-->
<Grid Background="Gray">
<TextBlock Margin="5" FontSize="20" Foreground="White" VerticalAlignment="Center">LOGIN</TextBlock>
<Button x:Name="BtnClose" Margin="5" Width="30" Height="30" VerticalAlignment="Center" HorizontalAlignment="Right" Content="X" FontSize="16" Background="Red" Foreground="White" Click="BtnClose_Click"/>
</Grid>
<!--添加登录表单-->
<Grid Margin="20">
<Label Content="Username" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<TextBox Margin="0 5 0 0" Width="200" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label Content="Password" Margin="0 30 0 0" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<PasswordBox Margin="0 35 0 0" Width="200" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Button Margin="0 70 0 0" Width="100" Height="30" HorizontalAlignment="Left" VerticalAlignment="Top" Content="Login"/>
</Grid>
</Grid>
</Window>
在上面的代码中,我们通过设置WindowStyle为None来隐藏窗口的默认边框。接着,我们在XAML布局中手动添加了一个Grid容器,这个容器包含了一个标题栏和登录表单两个部分。标题栏使用红色背景和白色文本,并且添加了一个关闭按钮。登录表单使用了标准的WPF布局元素。
在按钮的Click事件处理程序中,我们需要添加关闭窗口的代码:
private void BtnClose_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
这个示例的完整代码可以在Github上找到:https://github.com/hellowworld-exe/WPF-Login-Window-Without-Border
2. 通过代码控制窗口移动和关闭
除了使用XAML的方式设置窗口样式之外,我们还可以通过代码来使窗口可拖动和关闭。我们可以使用MouseMove事件,当用户按下鼠标左键并拖动窗口时,改变窗口的位置信息。我们还需要添加一些逻辑来实现窗口的关闭。
public partial class MainWindow : Window
{
private bool isMouseDown = false;
private Point mouseOffset;
public MainWindow()
{
InitializeComponent();
}
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
isMouseDown = true;
mouseOffset = e.GetPosition(null);
}
private void Grid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
isMouseDown = false;
}
private void Grid_MouseMove(object sender, MouseEventArgs e)
{
if (isMouseDown)
{
Point point = e.GetPosition(null);
double dx = point.X - mouseOffset.X;
double dy = point.Y - mouseOffset.Y;
this.Left += dx;
this.Top += dy;
mouseOffset = point;
}
}
private void BtnClose_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
在这个示例中,我们在窗口的Grid容器添加了MouseMove、MouseLeftButtonDown和MouseLeftButtonUp事件的处理程序。当用户按下鼠标左键并开始拖动窗口时,我们必须保存鼠标指针的位置(mouseOffset),并将isMouseDown变量设置为true。在MouseMove事件中,我们先判断isMouseDown是否为true,如果是就改变窗口的Left和Top属性,这样就可以使窗口跟随鼠标移动了。
这个示例的完整代码可以在Github上找到:https://github.com/hellowworld-exe/WPF-Login-Window-With-Move-and-Close
以上就是C#WPF建立无边框(标题栏)的登录窗口的完整攻略,希望能对开发者们提供帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# WPF 建立无边框(标题栏)的登录窗口的示例 - Python技术站