跟着bilibil龙马哥视频做的一个登录界面,个人感觉讲得很到位,适合新手),他是从开始的前后绑定慢慢解耦合到MVVM,让我较快的理解了WPF的基础。
【WPF入门】WPF零基础到精通,从概念到实操,步步提升!_哔哩哔哩_bilibili
成果展示
鼠标放置颜色改变
对passwordbox添加属性,能够binding
实现过程
界面布局,直接使用代码进行编辑
整体分为上下两部分,及两行,顶行进行标题设计,第二行进行其他控件的设计。
第二行分为左右两部分,左边这部分放置图片,右边放置账号、密登录按钮这写text和button。下面的代码是最终版本,里面有些控件和属性属于自定义。
<Grid><!--定义两行--><Grid.RowDefinitions><RowDefinition Height="25"></RowDefinition><RowDefinition></RowDefinition></Grid.RowDefinitions><!--第一行 标题--><TextBlock Text="在线办公管理系统" Width="800" FontWeight="Bold" Background="#0078d4"FontSize="20" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock><!--第二行--><Grid Grid.Row="1"><!--分成两列--><Grid.ColumnDefinitions><ColumnDefinition Width="180"></ColumnDefinition><ColumnDefinition></ColumnDefinition></Grid.ColumnDefinitions><!--第一列:图片--><Border Background="LightBlue"><Image Source="Images/Login.png" Height="90" Width="90" ></Image></Border><!--第二列 使用border给整个部分赋值背景--><Border Grid.Column="1" Background="LightCyan"><Grid HorizontalAlignment="Center" Height="200" Width="200" VerticalAlignment="Center"><!--三行两列--><Grid.RowDefinitions><RowDefinition Height="30"></RowDefinition><RowDefinition Height="30"></RowDefinition><!--auto 这一行占多少就有多高--><RowDefinition Height="auto"></RowDefinition></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="50"></ColumnDefinition><ColumnDefinition Width="100"></ColumnDefinition></Grid.ColumnDefinitions><!--第一行第一列--><TextBlock Text="账号" Margin="0,0,0,4"></TextBlock><!--第一行第二列--><!--Binding 绑定获取文本框的内容--><!--<TextBox Grid.Column="1" Margin="0,4" x:Name="txtAccount" ></TextBox>--><TextBox Grid.Column="1" Margin="0,4" Text="{Binding AccountModel.Account}" ></TextBox><!--第二行第一列--><TextBlock Text="密码" Grid.Row="1" Margin="0,4" ></TextBlock><!--第二行第二列--><!--<TextBox Grid.Row="1" Grid.Column="1" Margin="0,4" Text="{Binding AccountModel.Code}"></TextBox>--><!--<PasswordBox Grid.Row="1" Grid.Column="1" Margin="0,4" Password="{Binding AccountModel.Code}"></PasswordBox> 报错 password不是依赖属性--><PasswordBox Grid.Row="1" Grid.Column="1" Margin="0,4" pwdns:PasswordBoxExtend.MyPwd="{Binding AccountModel.Code,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" pwdns:PasswordBoxExtend.IsBind="True" ></PasswordBox><!--第三行 2列合并:Grid.ColumnSpan="2"--><custBtnNs:CustomButtons OverBackground="green" BtnRadius="5" Content="登录" Grid.Row="2" Grid.ColumnSpan="2" FontSize="20" Background="LightBlue" Command="{Binding Command}" HorizontalAlignment="Center" VerticalAlignment="Center" Height="30" Width="100"></custBtnNs:CustomButtons><!--绑定命令--></Grid></Border></Grid></Grid>
我这里也按照我的理解一步一步的推进
2.前后端直接绑定
最开始实现的是使用的按钮的click和对账号和密码的两个TextBox设置名字,并在后台调用text的方法。
3.双向绑定
上图的视图View就是主界面,此外设计了一个模型Model与其进行双向绑定 ,账号和密码属性便是定义在model下的后台代码下,这是一个解耦的过程,目的可以实现项目的并行开发。
4.委托和指令
5.MVVM
模型处理数据给试图模型,视图模型和界面相互绑定处理。