先上个效果图,QQ SL版的登录界面,拿来改了一下,也算是山寨版吧

主要还是在上一篇 LightSwitch登录界面如何设置背景 的基础上,添加自定义控件(继随page)的方式来实现.重写了登录Page。

using System;
using System.Linq;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections.Generic;
using Microsoft.LightSwitch;
using Microsoft.LightSwitch.Framework.Client;
using Microsoft.LightSwitch.Presentation;
using Microsoft.LightSwitch.Presentation.Extensions;
using System.Windows.Controls;
using System.Reflection;
using Microsoft.LightSwitch.Runtime.Shell.Internal.Implementation;
using LightSwitchApplication.Screens;
namespace LightSwitchApplication
{
public partial class Application
{
Frame rootFrame = null;
partial void Application_Initialize()
{
Microsoft.LightSwitch.Threading.Dispatchers.Main.BeginInvoke(() =>
{
rootFrame = ((Page)((ContentPresenter)System.Windows.Application.Current.RootVisual).Content).Content as Frame;
if (rootFrame != null)
rootFrame.Navigated += new System.Windows.Navigation.NavigatedEventHandler(rootFrame_Navigated);
});
}
void rootFrame_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
if (e.Content is LoginPage)
{
LoginPage lp = e.Content as LoginPage;
MyLoginPage mlp = new MyLoginPage(); //此处才是正真的登录界面,
foreach (KeyValuePair<string, string> navigationQueryStringValue in lp.NavigationContext.QueryString)
{
mlp.NavigationQueryStringValues.Add(navigationQueryStringValue.Key, navigationQueryStringValue.Value);
}
rootFrame.Content = mlp;
rootFrame.Navigated -= rootFrame_Navigated;
rootFrame = null;
}
}
}
}

在MyLoginPage中直接调用ILoginViewModel,ILoginInfo(系统内置登录接口)来实现完整的登录的处理过程。可通过反编译C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\LightSwitch\1.0\Client\Microsoft.LightSwitch.Client.Internal.dll 来查看。以下为一些主要代码处理:

public readonly static DependencyProperty ViewModelProperty;
static MyLoginPage()
{
MyLoginPage.ViewModelProperty = DependencyProperty.Register("ViewModel", typeof(ILoginViewModel),
typeof(MyLoginPage), new PropertyMetadata(new PropertyChangedCallback(MyLoginPage.ViewModelPropertyChanged)));
}
private void loginPage_Loaded(object sender, RoutedEventArgs e)
{
if (HtmlPage.IsEnabled) {
HtmlPage.Plugin.Focus();
}
this.userNameTextBox.Focus();
Binding binding = new Binding();
base.SetBinding(MyLoginPage.ViewModelProperty, binding);
this.UpdateLoginButtonIsEnabled();
if (IsolatedStorageFile.IsEnabled && IsolatedStorageSettings.ApplicationSettings.Contains(LastLoggedInUserName_StorageKey))
{
userNameTextBox.Text = IsolatedStorageSettings.ApplicationSettings[LastLoggedInUserName_StorageKey].ToString();
}
}
private static void ViewModelPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
MyLoginPage loginPage = (MyLoginPage)obj;
ILoginViewModel dataContext = (ILoginViewModel)loginPage.DataContext;
dataContext.LoginInfo.Navigable = loginPage.Navigable;
dataContext.LoginInfo.NavigationQueryStringValues.Clear();
foreach (KeyValuePair<string, string> navigationQueryStringValue in loginPage.NavigationQueryStringValues) {
dataContext.LoginInfo.NavigationQueryStringValues.Add(navigationQueryStringValue.Key, navigationQueryStringValue.Value);
}
dataContext.LoginInfo.PropertyChanged += new PropertyChangedEventHandler(loginPage.LoginInfo_PropertyChanged);
dataContext.LoginCommand.CanExecuteChanged += new EventHandler(loginPage.LoginCommand_CanExecuteChanged);
}

通过这种替换page的方式来实现登录窗口的个性化。

具体思路就不多解释了,你懂的。

源代码:http://download.csdn.net/detail/greystar/3751034

整个工程大约为21M左右

个性化lightswitch登录屏幕(附源码)相关推荐

  1. php jquery ajax登录,jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)

    弹出层主要用于展示丰富的页面信息,还有一个更好的应用是弹出表单层丰富交互应用.常见的应用有弹出登录表单层,用户提交登录信息,后台验证登录成功后,弹出层消失,主页面局部刷新用户信息.本文我们将给大家介绍 ...

  2. 个人博客网站实现微信扫码登录(附源码)

    前言 一般情况下,个人博客网站 想要做用户注册.登录, 就需要让用户填写用户名.密码等信息进行手动注册.登录,这非常不友好.如果想做成微信扫码登录,对不起~~, 微信扫码登录的接口只对企业开放.好吧, ...

  3. html实现登录界面(附源码)

    一.先看效果 背景图自己设置 二.源码下载: 链接:https://zyhq.lanzoul.com/ihBmu0iy5ybi 密码:maei8 免费下载 收费下载

  4. ssm+mysql+ssm基于web的酒店预订及个性化服务系统 毕业设计-附源码241822

    酒店预订及个性化服务系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题. ...

  5. SSM+基于web的酒店预订及个性化服务系统 毕业设计-附源码241822

    酒店预订及个性化服务系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题. ...

  6. [附源码]计算机毕业设计JAVAjsp基于个性化的汽车购买推荐系统

    [附源码]计算机毕业设计JAVAjsp基于个性化的汽车购买推荐系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Ecl ...

  7. [附源码]计算机毕业设计JAVA个性化新闻推荐系统

    [附源码]计算机毕业设计JAVA个性化新闻推荐系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Int ...

  8. [附源码]计算机毕业设计JAVA面向服装集群企业的个性化定制服务系统

    [附源码]计算机毕业设计JAVA面向服装集群企业的个性化定制服务系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Ec ...

  9. 黯然微信小程序杂记(二):小程序最新版登录并进行缓存模块的实现 附源码

    黯然微信小程序杂记(二):小程序最新版登录进行缓存模块的实现 附源码 一.功能描述 二.mine.wxml界面图片 三.mine.wxml代码 四.mine.wxss代码 五.mine.js代码 六. ...

最新文章

  1. 力扣(LeetCode)刷题,简单+中等题(第35期)
  2. C C++输出语句printf()输出保留小数点后保留1,2,3,4,5,6,7..n位(默认四舍五入)
  3. DevExpress的分隔条控件SplitterControl的使用
  4. 使用vl_sift提取图像特征
  5. 如何使用TCP套接字的端口来区分是哪个客户端发起的连接
  6. nodejs怎么与c语言通信费是什么,NodeJS介绍与使用
  7. NVIDIA Parallel Nsight
  8. web表格增删改_白话django之数据的增删改
  9. Mac系统设置系统搜索范围的方法
  10. (CVPR2020 Oral)用于实时实例分割的Deep Snake方法
  11. python:只想在opencv中显示红色通道?
  12. 使用webclient上传下载实例
  13. 按键精灵手机助手错误:at tempt to compare nu11 with number
  14. SpringBoot整合Cas
  15. android 死亡阴影,英雄无敌3死亡阴影
  16. 如何避免谷歌GMC广告被封,被封后又如何解封呢?
  17. 点集的读入与输出操作
  18. arcgis 做凹凸起伏的分类图
  19. 笔记本蓝牙模块转USB接口方法
  20. 聊聊Benchmark测试【转载】

热门文章

  1. linux半夜三点半定时重启,linux 定时任务 crontab相关(三)
  2. 【MySQL】6、Delete From删除语句
  3. 5473. 【NOIP2017提高组正式赛】小凯的疑惑
  4. modbustcp测试工具怎么用_【转】年轻人不讲武德不仅白piao接口测试知识还白piao接口测试工具会员...
  5. 我的世界JAVA挂机杀怪有经验_我的世界如何快速获得经验?
  6. React Native 0.44.3 ----------微信h5支付
  7. 【Python】批量修改照片日期和文件名
  8. 设计原则:里式替换原则(LSP)
  9. 【C语言】贪吃蛇游戏的实现(一)
  10. win10 路由表配置