1、在Login.xaml中添加資源:
<XmlDataProvider x:Key="XmlDataProvider" Source="pack://application:,,,/5yue.PMS;Component/Config/SysConfig.xml" XPath="SysConfig"/>
2、使用ComboBox實現帳號輸入:
<ComboBox x:Name="UserName" Width="160" Height="26" FontSize="14" IsEditable="True" Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Source={StaticResource XmlDataProvider}, XPath=SavedLoginNames/LoginName}" BorderThickness ="1" SelectedIndex="0"/> <CheckBox x:Name="ckSaveName" FontSize="12px" Grid.Row="1" Grid.Column="2" HorizontalAlignment="Right" Margin="0,0,22,0" Padding="2 0 " Foreground="#88052742">記住我</CheckBox>
3、后台邏輯,在提交驗證成功后添加保存帳號的步驟即可:
/// <summary> /// 保存賬號(異步執行) /// </summary> /// <param name="loginName"></param> private async void SaveLoginName(string loginName) { await Task.Delay(1); if(this.ckSaveName.IsChecked != true) return; try { string filePath = Utils.GetMapPath("")+@"Config\SysConfig.xml"; XmlDocument doc = XmlHelper.GetXMLDoc(filePath); if (doc != null) { XmlNode rootNode = doc.SelectSingleNode("SysConfig"); List<string> nameList = XmlHelper.GetNodesToList(rootNode, "SavedLoginNames"); if (nameList != null && !nameList.Contains(loginName))// 如果賬號仍未保存 { XmlNode namesNode = rootNode.SelectSingleNode("SavedLoginNames");// 獲取SavedLoginNames節點信息 XmlNode childNode = doc.CreateElement("LoginName");// 創建新的SavedLoginName節點 childNode.InnerText = loginName;// 節點內容值為loginName參數 namesNode.PrependChild(childNode);// 插入到最前 int maxCount = Utils.StrToInt(CacheProvider.GetSysConfig("SavedLoginNameCount"), 5); namesNode = XmlHelper.HandleNodeUnderMaxCount(namesNode, maxCount);// 處理保存賬號的最大數量大於config表中配置的數量 doc.Save(filePath);// 保存 } else if (nameList != null && nameList.Contains(loginName))// 如果賬號已保存, 將其提到最前。 { if (nameList.Count == 1) return; XmlNode namesNode = rootNode.SelectSingleNode("SavedLoginNames"); XmlNodeList childNodes = namesNode.ChildNodes; foreach (XmlNode item in childNodes) { if (loginName.Equals(item.InnerText)) { XmlNode newNode = item; namesNode.RemoveChild(item); namesNode.PrependChild(newNode); break; } } doc.Save(filePath);// 保存 } //else if(nameList == null) return "failed,讀取配置失敗!"; } //return (int)Message.SUCCESS; } catch (Exception ex) { //return ex.ToString(); } }
4、項目根目錄/Config下添加SysConfig.xml保存用戶名

<?xml version="1.0" encoding="UTF-8"?> <SysConfig> <SavedLoginNames><!-- 保存的登錄賬號 --> <LoginName>admin</LoginName> <LoginName>111</LoginName> <LoginName>555</LoginName> <LoginName>22</LoginName> <LoginName>444</LoginName> </SavedLoginNames> </SysConfig>
效果如圖: