个性化lightswitch登录屏幕(附源码)
先上个效果图,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登录屏幕(附源码)相关推荐
- php jquery ajax登录,jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
弹出层主要用于展示丰富的页面信息,还有一个更好的应用是弹出表单层丰富交互应用.常见的应用有弹出登录表单层,用户提交登录信息,后台验证登录成功后,弹出层消失,主页面局部刷新用户信息.本文我们将给大家介绍 ...
- 个人博客网站实现微信扫码登录(附源码)
前言 一般情况下,个人博客网站 想要做用户注册.登录, 就需要让用户填写用户名.密码等信息进行手动注册.登录,这非常不友好.如果想做成微信扫码登录,对不起~~, 微信扫码登录的接口只对企业开放.好吧, ...
- html实现登录界面(附源码)
一.先看效果 背景图自己设置 二.源码下载: 链接:https://zyhq.lanzoul.com/ihBmu0iy5ybi 密码:maei8 免费下载 收费下载
- ssm+mysql+ssm基于web的酒店预订及个性化服务系统 毕业设计-附源码241822
酒店预订及个性化服务系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题. ...
- SSM+基于web的酒店预订及个性化服务系统 毕业设计-附源码241822
酒店预订及个性化服务系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题. ...
- [附源码]计算机毕业设计JAVAjsp基于个性化的汽车购买推荐系统
[附源码]计算机毕业设计JAVAjsp基于个性化的汽车购买推荐系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Ecl ...
- [附源码]计算机毕业设计JAVA个性化新闻推荐系统
[附源码]计算机毕业设计JAVA个性化新闻推荐系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Int ...
- [附源码]计算机毕业设计JAVA面向服装集群企业的个性化定制服务系统
[附源码]计算机毕业设计JAVA面向服装集群企业的个性化定制服务系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Ec ...
- 黯然微信小程序杂记(二):小程序最新版登录并进行缓存模块的实现 附源码
黯然微信小程序杂记(二):小程序最新版登录进行缓存模块的实现 附源码 一.功能描述 二.mine.wxml界面图片 三.mine.wxml代码 四.mine.wxss代码 五.mine.js代码 六. ...
最新文章
- 力扣(LeetCode)刷题,简单+中等题(第35期)
- C C++输出语句printf()输出保留小数点后保留1,2,3,4,5,6,7..n位(默认四舍五入)
- DevExpress的分隔条控件SplitterControl的使用
- 使用vl_sift提取图像特征
- 如何使用TCP套接字的端口来区分是哪个客户端发起的连接
- nodejs怎么与c语言通信费是什么,NodeJS介绍与使用
- NVIDIA Parallel Nsight
- web表格增删改_白话django之数据的增删改
- Mac系统设置系统搜索范围的方法
- (CVPR2020 Oral)用于实时实例分割的Deep Snake方法
- python:只想在opencv中显示红色通道?
- 使用webclient上传下载实例
- 按键精灵手机助手错误:at tempt to compare nu11 with number
- SpringBoot整合Cas
- android 死亡阴影,英雄无敌3死亡阴影
- 如何避免谷歌GMC广告被封,被封后又如何解封呢?
- 点集的读入与输出操作
- arcgis 做凹凸起伏的分类图
- 笔记本蓝牙模块转USB接口方法
- 聊聊Benchmark测试【转载】
热门文章
- linux半夜三点半定时重启,linux 定时任务 crontab相关(三)
- 【MySQL】6、Delete From删除语句
- 5473. 【NOIP2017提高组正式赛】小凯的疑惑
- modbustcp测试工具怎么用_【转】年轻人不讲武德不仅白piao接口测试知识还白piao接口测试工具会员...
- 我的世界JAVA挂机杀怪有经验_我的世界如何快速获得经验?
- React Native 0.44.3 ----------微信h5支付
- 【Python】批量修改照片日期和文件名
- 设计原则:里式替换原则(LSP)
- 【C语言】贪吃蛇游戏的实现(一)
- win10 路由表配置