public static ReturnValue <String> GetDefaultValue(string path, string propertyName, List <TextValuePair> list) { var rv = new ReturnValue <string>(); XElement root; if (_cachedFile.ContainsKey(path)) { root = _cachedFile[path]; } else { root = XDocument.Load(System.Windows.Application.GetResourceStream( new Uri(ResourceFile.MapXMLPath(path, "DefaultValue"))).Stream).Root; _cachedFile.Add(path, root); } var items = root.Elements("item"); foreach (var item in items) { if (item.Attribute("key").Value == propertyName) { var ia = item.Attribute("value"); if (ia != null) { rv.Output1 = ia.Value; return(rv); } ia = item.Attribute("text"); if (ia != null) { var li = list.FirstOrDefault(p => p.Text == ia.Value); if (li != null) { rv.Output1 = li.Value; return(rv); } else { rv.Result = false; rv.Message = BuildErrorMessage(path, propertyName, "text not found."); return(rv); } } ia = item.Attribute("index"); if (ia != null) { int idx; if (int.TryParse(ia.Value, out idx)) { if (list.Count > idx) { rv.Output1 = list[idx].Value; return(rv); } else { rv.Result = false; rv.Message = BuildErrorMessage(path, propertyName, "index out of range."); return(rv); } } else { rv.Result = false; rv.Message = BuildErrorMessage(path, propertyName, "index is not an integer."); return(rv); } } } } rv.Result = false; rv.Message = BuildErrorMessage(path, propertyName, "Property name not found."); return(rv); }
public Model.ReturnValue LoadRibbon(ViewModel.ViewModelBase vm) { var pageID = vm.PageID; var path = vm.Path; var rv = new Model.ReturnValue(); var realPath = ResourceFile.MapXMLPath(path, "Ribbon"); if (!ResourceFile.Exists(realPath)) { rv.Result = false; rv.Message = "file does not exist."; return(rv); } var root = XDocument.Load(System.Windows.Application.GetResourceStream( new Uri(realPath)).Stream).Root; var tabs = root.Elements("RibbonTab"); List <RibbonTab> pageTabs; if (_ribTabs.ContainsKey(pageID)) { pageTabs = _ribTabs[pageID]; } else { pageTabs = new List <RibbonTab>(); _ribTabs.Add(pageID, pageTabs); } foreach (var xt in tabs) { var rt = CreateRibbonTab(xt); var rtHeader = rt.Header.ToString(); //子页面与子页面之间的header允许重复 //但是任何一个子页面的header 不能与默认页面的header重复. //所以, 当遇到与默认页面header重复时, 认为是在覆盖默认tab if (_defaultTabs.ContainsKey(rtHeader)) { if (rt.Tag != null && rt.Tag.ToString().ToLower() == "overwrite") { _defaultTabs[rtHeader].Items.Clear(); } while (rt.Items.Count > 0) { var rg = rt.Items[0]; rt.Items.Remove(rg); _defaultTabs[rtHeader].Items.Add(rg); } if (rt.IsSelected) { _defaultTabs[rtHeader].IsSelected = true; } } else { _rib.Items.Add(rt); pageTabs.Add(rt); } } return(rv); }