C# WPF实用的注册窗体

时间如流水,只能流去不流回!

点赞再看,养成习惯,这是您给我创作的动力!

本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform、WPF、ASP.NET Core等,亦有C++桌面相关的Qt Quick和Qt Widgets等,只分享自己熟悉的、自己会的。

阅读导航:

  • 一、先看效果
  • 二、本文背景
  • 三、代码实现
  • 四、文章参考
  • 五、代码下载

一、先看效果

C# WPF实用的注册窗体

二、本文背景

无。

三、代码实现

站长使用.Net Core 3.1创建的WPF工程,创建名称为“Register”的解决方案后,需要添加Nuget库,下面两个库都需要添加:

C# WPF实用的注册窗体

App.xaml添加MaterialDesign的样式文件

<Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.Purple.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

注册窗体MainWindow.xaml

<Window x:Class="Register.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:Register"
        xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
        mc:Ignorable="d"
        Title="MainWindow" Height="600" Width="1000">
    <Grid Background="#FFDADADA">
        <Border Margin="15" MaxWidth="600" Background="White" VerticalAlignment="Center" Padding="30" CornerRadius="15">
            <Border.Effect>
                <DropShadowEffect BlurRadius="30" Color="LightGray" ShadowDepth="0"/>
            </Border.Effect>
            <StackPanel>
                <TextBlock Text="欢迎" FontSize="30" FontWeight="Bold" Margin="0 0 0 20"/>

                <Grid Margin="0 0 0 20">
                    <Button Content="注册" HorizontalAlignment="Left"/>
                    <Button Content="登录" HorizontalAlignment="Right" Style="{StaticResource MaterialDesignFlatButton}"/>
                </Grid>

                <TextBox materialDesign:HintAssist.Hint="用户名" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Margin="0 5"/>
                <PasswordBox materialDesign:HintAssist.Hint="密码" Style="{StaticResource MaterialDesignFloatingHintPasswordBox}" Margin="0 5"/>
                <PasswordBox materialDesign:HintAssist.Hint="确认密码" Style="{StaticResource MaterialDesignFloatingHintPasswordBox}" Margin="0 5"/>
                <TextBox materialDesign:HintAssist.Hint="电子邮件" Style="{StaticResource MaterialDesignFloatingHintTextBox}" Margin="0 5"/>
                <Button Content="注册" Margin="0 20"/>
            </StackPanel>
        </Border>
    </Grid>
</Window>

四、文章参考

参考:
Design com WPF :   https://www.youtube.com/watch?v=B1azT_aRdHU&t=190s

五、代码下载

文章中代码已经全部贴出,就这么几行代码,不要奇怪,就是这么多。

 

除非注明,文章均由 Dotnet9 整理发布,欢迎转载。

转载请注明本文地址:https://dotnet9.com/2019/12/it-technology/csharp/wpf/register-window.html

欢迎扫描下方二维码关注 Dotnet9 的微信公众号,本站会及时推送最新技术文章(微信公众号“dotnet9_com”):

微信搜索公众号“dotnet9_com”添加关注

 

如有收获,请大力转发,给Dotnet9赞助和支持,谢谢大家对dotnet技术的关注和支持 。

本站使用 wpcom 的 JustNews主题

<think>嗯,用户想了解C#WPF和WinForms的差异以及它们的使用场景。首先,我需要回忆之前提供的引用内容,特别是引用[3]里提到的WPF与WinForms的区别。用户可能已经看过这些信息,但需要更详细的对比。 首先,我应该从架构开始。WPF基于DirectX,而WinForms依赖GDI+。这意味着WPF在图形渲染上更强大,适合需要复杂UI和动画的应用。而WinForms可能更轻量,适合传统桌面程序。 接下来是开发模式。WPF使用XAML分离界面设计和业务逻辑,支持MVVM模式,这对团队协作和UI定制很有帮助。WinForms则是代码和设计器混合,可能更适合快速开发简单的界面。 数据绑定方面,WPF有强大的双向绑定机制,支持数据模板和转换器,这在数据驱动的应用中非常有用。而WinForms的数据绑定相对基础,可能需要更多手动处理。 控件和样式部分,WPF控件模板和样式系统更灵活,允许深度自定义控件外观。WinForms的控件样式化有限,主要依赖默认外观,这对需要标准化界面的项目可能足够。 性能方面,WinForms启动快,资源消耗低,适合对性能敏感的应用。WPF虽然功能多,但启动可能稍慢,适合需要丰富视觉效果的应用。 兼容性和学习曲线也是考虑因素。WinForms适合维护旧项目或需要兼容老旧系统的情况,而WPF适合新项目,尤其是需要现代UI的情况。同时,WPF的学习曲线更陡峭,需要掌握XAML和相关概念。 使用场景方面,WinForms适合内部工具、传统应用和快速开发,而WPF适合需要定制UI、复杂数据可视化和跨平台兼容性的项目。用户可能需要根据项目需求选择,比如是否需要高清屏支持或触摸操作。 最后,生成相关问题时要覆盖性能优化、迁移注意事项、数据绑定实现、控件自定义以及适用项目类型,这样用户能进一步探索。</think>### C# WPF vs WinForms 窗体:核心差异与使用场景对比 #### 一、架构与渲染机制 1. **WinForms** - 基于**GDI+**的窗体技术,直接调用Windows原生控件(如Button、TextBox) - 控件布局通过代码或设计器直接操作坐标实现 - 典型代码示例: ```csharp Button btn = new Button(); btn.Text = "Click Me"; btn.Location = new Point(10, 10); this.Controls.Add(btn); ``` 2. **WPF** - 基于**DirectX**的矢量图形渲染,支持硬件加速 - 通过$XAML$实现界面与逻辑分离,控件由组合式视觉树构成 - 支持分辨率无关的布局(如自动适配高清屏) - 代码示例: ```xml <Button Content="Click Me" HorizontalAlignment="Left" Margin="10"/> ``` #### 二、开发模式差异 | 特性 | WinForms | WPF | |---------------------|-----------------------------------|-----------------------------------| | **UI设计** | 设计器与代码混合 | XAML声明式设计 + Blend工具支持[^3] | | **数据绑定** | 基础绑定(单向为主) | 双向绑定 + 数据模板 + 转换器[^2] | | **样式系统** | 有限样式(BackColor/Font等) | 完整样式体系 + 控件模板重写[^2] | | **动画支持** | 需手动实现Timer动画 | Storyboard + 时间线动画 | #### 三、关键能力对比 1. **数据驱动场景** - WPF的$Binding$系统支持: ```xml <TextBlock Text="{Binding UserName, Mode=TwoWay}"/> ``` 配合$INotifyPropertyChanged$实现自动更新[^2] 2. **复杂UI构建** - WPF可通过$ControlTemplate$完全重写控件外观: ```xml <ControlTemplate TargetType="Button"> <Grid> <Ellipse Fill="{TemplateBinding Background}"/> <ContentPresenter/> </Grid> </ControlTemplate> ``` 3. **多线程处理** - WPF强制使用$Dispatcher$管理UI线程[^2],而WinForms通过$Control.Invoke$ #### 四、使用场景建议 ✅ **选择WinForms的场景** - 需快速开发简单数据录入工具 - 维护遗留系统(兼容.NET Framework 2.0+) - 硬件配置较低的环境(如工业控制PC) ✅ **选择WPF的场景** - 需要高定制化UI(如医疗影像系统、仪表盘) - 数据可视化需求(实时图表、3D呈现) - 跨平台兼容需求(通过MAUI等框架扩展) #### 五、迁移注意事项 1. **技术债务** - WinForms的$UserControl$需重构为WPF的$CustomControl$ 2. **学习曲线** - 需掌握$DependencyProperty$和路由事件系统[^2] 3. **混合方案** - 可通过$WindowsFormsHost$在WPF中嵌入WinForms控件
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值