// 初始化.cs文件中的数据绑定,一些不方便在xaml中绑定的部分在这里绑定 private void init_binding() { // 绑定SeqMessage的类型枚举 ComboBox seqMessage_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "seqMessage_ComboBox"); seqMessage_ComboBox.Items = System.Enum.GetValues(typeof(SeqMessage)); }
public void Update_Attribute() { ListBox attr_ListBox = ControlExtensions.FindControl <ListBox>(this, "attr_ListBox"); if (attr_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定要修改的Attribute!"; return; } ListBox type_ListBox = ControlExtensions.FindControl <ListBox>(this, "type_ListBox"); if (type_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定成员类型!"; return; } TextBox attrId_TextBox = ControlExtensions.FindControl <TextBox>(this, "attrId_TextBox"); if (attrId_TextBox.Text == null || attrId_TextBox.Text.Length == 0) { ResourceManager.mainWindowVM.Tips = "需要给出成员名称!"; return; } // todo 变量名判重 Attribute attribute = ((Attribute)attr_ListBox.SelectedItem); attribute.Type = (sbid._M.Type)type_ListBox.SelectedItem; attribute.Identifier = attrId_TextBox.Text; ResourceManager.mainWindowVM.Tips = "为自定义类型[" + ((UserType_EW_VM)DataContext).UserType.Name + "]更新了成员变量:" + attribute; }
// 初始化.cs文件中的事件处理方法,一些无法在xaml中绑定的部分在这里绑定 private void init_event() { // 绑定Method右侧列表选中项变化的处理方法 ListBox method_ListBox = ControlExtensions.FindControl <ListBox>(this, "method_ListBox"); method_ListBox.SelectionChanged += method_ListBox_Changed; }
public void Append_Inv_PropNav() { if (process_Inv_ComboBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定进程模板!"; return; } Process process = (Process)process_Inv_ComboBox.SelectedItem; TreeView invPropNav_TreeView = ControlExtensions.FindControl <TreeView>(this, nameof(invPropNav_TreeView)); if (invPropNav_TreeView.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定要接入的属性!"; return; } Nav nav = (Nav)invPropNav_TreeView.SelectedItem; string navStr = nav.Identifier + (nav.IsArray ? ("[" + nav.ArrayIndex + "]") : ""); while (nav.ParentNav != null) { nav = nav.ParentNav; navStr = nav.Identifier + (nav.IsArray ? ("[" + nav.ArrayIndex + "]") : "") + "." + navStr; } navStr = process.RefName.Content + "." + navStr; Append_Inv_Symbol(navStr); }
// 初始化.cs文件中的事件处理方法,一些无法在xaml中绑定的部分在这里绑定 private void init_event() { // 绑定进程模板ComboBox选中项变化的处理方法 ComboBox process_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "process_ComboBox"); process_ComboBox.SelectionChanged += process_ComboBox_Changed; }
public void Add_ProcessMethod() { ListBox process_ListBox = ControlExtensions.FindControl <ListBox>(this, "process_ListBox"); if (process_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定进程模板!"; return; } Process process = (Process)process_ListBox.SelectedItem; ListBox method_ListBox = ControlExtensions.FindControl <ListBox>(this, "method_ListBox"); if (method_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定方法!"; return; } Method method = (Method)method_ListBox.SelectedItem; ProcessMethod processMethod = new ProcessMethod(process, method); ((Axiom_EW_VM)DataContext).Axiom.ProcessMethods.Add(processMethod); ResourceManager.mainWindowVM.Tips = "添加了ProcessMethod:" + processMethod; }
private void get_control_reference() { attackRelation_ComboBox = ControlExtensions.FindControl <ComboBox>(this, nameof(attackRelation_ComboBox)); attackRelation_ComboBox.Items = System.Enum.GetValues(typeof(AttackRelation)); description_TextBox = ControlExtensions.FindControl <TextBox>(this, nameof(description_TextBox)); visible_CheckBox = ControlExtensions.FindControl <CheckBox>(this, nameof(visible_CheckBox)); }
public void Update_Formula() { ListBox axiom_ListBox = ControlExtensions.FindControl <ListBox>(this, "axiom_ListBox"); if (axiom_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定要更新的公理公式!"; return; } TextBox axiom_TextBox = ControlExtensions.FindControl <TextBox>(this, "axiom_TextBox"); if (axiom_TextBox.Text == null || axiom_TextBox.Text.Length == 0) { ResourceManager.mainWindowVM.Tips = "需要给出修改后的公理公式!"; return; } ObservableCollection <Formula> formulas = ((Axiom_EW_VM)DataContext).Axiom.Formulas; // 判重 foreach (Formula formu in formulas) { if (formu.Content == axiom_TextBox.Text) { ResourceManager.mainWindowVM.Tips = "无效的操作。该公理公式已经添加过"; return; } } Formula formula = (Formula)axiom_ListBox.SelectedItem; formula.Content = axiom_TextBox.Text; ResourceManager.mainWindowVM.Tips = "更新了公理公式:" + formula.Content; }
public void Delete_Attribute() { ListBox attr_ListBox = ControlExtensions.FindControl <ListBox>(this, "attr_ListBox"); if (attr_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定要删除的Attribute!"; return; } // 获取要删除的Attribute对象 Attribute attribute = (Attribute)attr_ListBox.SelectedItem; // 判断并删除Authenticity bool del_auth = attribute.Type is UserType?JudgeAndDeleteAuthenticity((UserType)attribute.Type, null) : false; ((Process_EW_VM)DataContext).Process.Attributes.Remove(attribute); ResourceManager.mainWindowVM.Tips = "为进程模板[" + ((Process_EW_VM)DataContext).Process.RefName + "]删除了成员变量:" + attribute + "。"; // Tips补充 if (del_auth) { ResourceManager.mainWindowVM.Tips += "[!]因UserType被修改,SecurityProperty中依赖于它的Authenticity的二级属性失配,被一同删除。"; } }
public void Add_NZMethod() { ListBox innerMethod_ListBox = ControlExtensions.FindControl <ListBox>(this, "innerMethod_ListBox"); if (innerMethod_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定内置方法!"; return; } ComboBox crypto_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "crypto_ComboBox"); if (crypto_ComboBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定加密算法!"; return; } // todo 方法判重 Method method_template = (Method)innerMethod_ListBox.SelectedItem; // 形参表要拷贝一份,以防止在自定Method中对其修改时影响到内置Method ObservableCollection <Attribute> paramerters = new ObservableCollection <Attribute>(); foreach (Attribute attribute in method_template.Parameters) { paramerters.Add(new Attribute(attribute.Type, attribute.Identifier)); } // 这里加密方法要用用户选中的,而不是内置方法模板里的None Method method = new Method(method_template.ReturnType, method_template.Name, paramerters, (Crypto)crypto_ComboBox.SelectedItem); ((Process_EW_VM)DataContext).Process.Methods.Add(method); ResourceManager.mainWindowVM.Tips = "为进程模板[" + ((Process_EW_VM)DataContext).Process.Name + "]添加了成员方法:" + method; }
public void Add_Formula() { TextBox axiom_TextBox = ControlExtensions.FindControl <TextBox>(this, "axiom_TextBox"); if (axiom_TextBox.Text == null || axiom_TextBox.Text.Length == 0) { ResourceManager.mainWindowVM.Tips = "需要给出要添加的公理公式!"; return; } ObservableCollection <Formula> formulas = ((Axiom_EW_VM)DataContext).Axiom.Formulas; // 判重 foreach (Formula formu in formulas) { if (formu.Content == axiom_TextBox.Text) { ResourceManager.mainWindowVM.Tips = "无效的操作。该公理公式已经添加过"; return; } } Formula formula = new Formula(axiom_TextBox.Text); formulas.Add(formula); ResourceManager.mainWindowVM.Tips = "添加了公理公式:" + formula.Content; }
// 内置Method列表选中项变化的处理 private void innerMethod_ListBox_Changed(object sender, SelectionChangedEventArgs e) { // 根据不同内置Method应允许不同的算法 ListBox innerMethod_ListBox = ControlExtensions.FindControl <ListBox>(this, "innerMethod_ListBox"); ComboBox crypto_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "crypto_ComboBox"); if (innerMethod_ListBox.SelectedItem == null) // 变成没有选中时,恢复全列表 { crypto_ComboBox.Items = System.Enum.GetValues(typeof(Crypto)); crypto_ComboBox.SelectedItem = Crypto.None; return; } Method method = (Method)innerMethod_ListBox.SelectedItem; switch (method.Name) { // 对称加解密 case "SymEnc": case "SymDec": crypto_ComboBox.Items = Method.Sym; crypto_ComboBox.SelectedItem = Method.Sym[0]; break; // 签名和验证 case "Sign": case "Verify": crypto_ComboBox.Items = Method.ASym.Union(Method.Hash).ToList(); crypto_ComboBox.SelectedItem = Method.ASym[0]; break; // 如果添加了其他的内置方法,要在这里加逻辑 default: break; } }
public void Update_KnowledgePair() { ListBox knowledgePair_ListBox = ControlExtensions.FindControl <ListBox>(this, "knowledgePair_ListBox"); if (knowledgePair_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定要修改的KnowledgePair!"; return; } ListBox process_ListBox = ControlExtensions.FindControl <ListBox>(this, "process_ListBox"); if (process_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定Process!"; return; } ListBox attribute_ListBox = ControlExtensions.FindControl <ListBox>(this, "attribute_ListBox"); if (attribute_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定Attribute!"; return; } KnowledgePair knowledgePair = (KnowledgePair)knowledgePair_ListBox.SelectedItem; knowledgePair.Process = (Process)process_ListBox.SelectedItem; knowledgePair.Attribute = (Attribute)attribute_ListBox.SelectedItem; ResourceManager.mainWindowVM.Tips = "修改了KnowledgePair:" + knowledgePair; }
private void init_event() { // 锁头按下时反转IsLock属性 Lock lockControl = ControlExtensions.FindControl <Lock>(this, nameof(lockControl)); lockControl.Tapped += reverseIsLock; }
public void Add_Knowledge() { ListBox process_ListBox = ControlExtensions.FindControl<ListBox>(this, "process_ListBox"); if (process_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定Process!"; return; } Process process = (Process)process_ListBox.SelectedItem; ListBox attribute_ListBox = ControlExtensions.FindControl<ListBox>(this, "attribute_ListBox"); if (attribute_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定Attribute!"; return; } Attribute attribute = (Attribute)attribute_ListBox.SelectedItem; ObservableCollection<Knowledge> knowledges = ((InitialKnowledge_EW_VM)DataContext).InitialKnowledge.Knowledges; // 判重 foreach (Knowledge know in knowledges) { if (know.Process == process && know.Attribute == attribute) { ResourceManager.mainWindowVM.Tips = "无效的操作。该单知识已经存在"; return; } } Knowledge knowledge = new Knowledge(process, attribute); knowledges.Add(knowledge); ResourceManager.mainWindowVM.Tips = "添加了Knowledge:" + knowledge; }
// 初始化.cs文件中的数据绑定,一些不方便在xaml中绑定的部分在这里绑定 private void init_binding() { // 绑定Method的内置方法 ListBox innerMethod_ListBox = ControlExtensions.FindControl <ListBox>(this, "innerMethod_ListBox"); innerMethod_ListBox.Items = Method.InnerMethods; // 绑定内置Method的加密算法枚举 ComboBox crypto_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "crypto_ComboBox"); crypto_ComboBox.Items = System.Enum.GetValues(typeof(Crypto)); crypto_ComboBox.SelectedItem = Crypto.None; // 绑定CommMethod的InOut枚举 ComboBox inout_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "inout_ComboBox"); inout_ComboBox.Items = System.Enum.GetValues(typeof(InOut)); inout_ComboBox.SelectedItem = InOut.In; // 绑定CommMethod的CommWay枚举 ComboBox commWay_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "commWay_ComboBox"); commWay_ComboBox.Items = System.Enum.GetValues(typeof(CommWay)); commWay_ComboBox.SelectedItem = CommWay.NativeEthernetFrame; }
private void init_binding() { // 绑定Axiom的内置公理公式 ListBox innerFormula_ListBox = ControlExtensions.FindControl <ListBox>(this, "innerFormula_ListBox"); innerFormula_ListBox.Items = Axiom.InnerFormulas; }
public void Update_ZDMethod() { ListBox method_ZD_ListBox = ControlExtensions.FindControl <ListBox>(this, "method_ZD_ListBox"); if (method_ZD_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定要更新的Method!"; return; } ComboBox returnType_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "returnType_ComboBox"); if (returnType_ComboBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定自定Method的返回类型!"; return; } TextBox methodName_TextBox = ControlExtensions.FindControl <TextBox>(this, "methodName_TextBox"); if (methodName_TextBox.Text == null || methodName_TextBox.Text.Length == 0) { ResourceManager.mainWindowVM.Tips = "需要给出自定Method的方法名!"; return; } ObservableCollection <Attribute> parameters = ((Process_EW_VM)DataContext).ZDParams; if (parameters.Count == 0) { ResourceManager.mainWindowVM.Tips = "至少要在形参表中添加一个参数!"; return; } Method method = (Method)method_ZD_ListBox.SelectedItem; if (methodName_TextBox.Text != method.Name && Checker.Process_Contain_PropName(VM.Process, methodName_TextBox.Text)) { ResourceManager.mainWindowVM.Tips = "标识符重复!"; return; } method.ReturnType = (Type)returnType_ComboBox.SelectedItem; method.Name = methodName_TextBox.Text; method.Parameters = parameters; method.CryptoSuffix = Crypto.None; ResourceManager.mainWindowVM.Tips = "更新了自定Method:" + method; // 更新完成后,要将临时参数列表拿掉,这样再向临时参数列表中添加/更新内容也不会影响刚刚添加的Method // ((Process_EW_VM)DataContext).ZDParams = new ObservableCollection<Attribute>(); // 【11月10日bugfix】更新完成后,将这个临时参数表复制一份保留 ObservableCollection <Attribute> tmp = new ObservableCollection <Attribute>(); foreach (Attribute attribute in ((Process_EW_VM)DataContext).ZDParams) { tmp.Add(new Attribute(attribute)); } ((Process_EW_VM)DataContext).ZDParams = tmp; }
public void Update_ProcessMethod() { ListBox processMethod_ListBox = ControlExtensions.FindControl <ListBox>(this, "processMethod_ListBox"); if (processMethod_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定要更新的ProcessMethod!"; return; } ProcessMethod processMethod = (ProcessMethod)processMethod_ListBox.SelectedItem; ListBox process_ListBox = ControlExtensions.FindControl <ListBox>(this, "process_ListBox"); if (process_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定进程模板!"; return; } Process process = (Process)process_ListBox.SelectedItem; ListBox method_ListBox = ControlExtensions.FindControl <ListBox>(this, "method_ListBox"); if (method_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定方法!"; return; } Method method = (Method)method_ListBox.SelectedItem; processMethod.Process = process; processMethod.Method = method; ResourceManager.mainWindowVM.Tips = "更新了ProcessMethod:" + processMethod; }
// 初始化.cs文件中的事件处理方法,一些无法在xaml中绑定的部分在这里绑定 private void init_event() { // 绑定自定Method右侧列表选中项变化的处理方法 ListBox method_ZD_ListBox = ControlExtensions.FindControl <ListBox>(this, nameof(method_ZD_ListBox)); method_ZD_ListBox.SelectionChanged += method_ZD_ListBox_Changed; // 发生点击的处理方法 method_ZD_ListBox.Tapped += Utils.ListBox_Tapped; // 绑定CommMethod右侧列表选中项变化的处理方法 ListBox commMethod_ListBox = ControlExtensions.FindControl <ListBox>(this, nameof(commMethod_ListBox)); commMethod_ListBox.SelectionChanged += commMethod_ListBox_Changed; // 发生点击的处理方法 commMethod_ListBox.Tapped += Utils.ListBox_Tapped; // 绑定内置Method列表选中项变化的处理方法 ListBox innerMethod_ListBox = ControlExtensions.FindControl <ListBox>(this, nameof(innerMethod_ListBox)); innerMethod_ListBox.SelectionChanged += innerMethod_ListBox_Changed; // 发生点击的处理方法 innerMethod_ListBox.Tapped += Utils.ListBox_Tapped; // 绑定CommMethod的CommWay选中项变化的处理方法 ComboBox commWay_ComboBox = ControlExtensions.FindControl <ComboBox>(this, nameof(commWay_ComboBox)); commWay_ComboBox.SelectionChanged += commWay_ComboBox_Changed; }
// 进程模板选中项变化的处理 private void process_ComboBox_Changed(object sender, SelectionChangedEventArgs e) { // 安全锁锁定时不做任何修改 if (ObjLifeLineEWVM.SafetyLock) { return; } // 获取选中的Process ComboBox process_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "process_ComboBox"); if (process_ComboBox.SelectedItem == null) { return; } Process process = (Process)process_ComboBox.SelectedItem; // 清空从该ObjLifeLine_VM出发的消息连线上的CommMethod foreach (Connector_VM connector_VM in ObjLifeLineEWVM.ObjLifeLine_VM.ConnectorVMs) { Message_VM message_VM = (Message_VM)connector_VM.ConnectionVM; if (message_VM != null && message_VM.Source == connector_VM) { message_VM.CommMessage.CommMethod = null; } } // 提示 ResourceManager.mainWindowVM.Tips = "进程模板被修改为[" + process.Name + "],旧的消息通信已清除"; }
public void Update_Confidential() { ListBox confidential_ListBox = ControlExtensions.FindControl <ListBox>(this, "confidential_ListBox"); if (confidential_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定要修改的Confidential!"; return; } ListBox process_Con_ListBox = ControlExtensions.FindControl <ListBox>(this, "process_Con_ListBox"); if (process_Con_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定Process!"; return; } ListBox attribute_Con_ListBox = ControlExtensions.FindControl <ListBox>(this, "attribute_Con_ListBox"); if (attribute_Con_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定Attribute!"; return; } Confidential confidential = (Confidential)confidential_ListBox.SelectedItem; confidential.Process = (Process)process_Con_ListBox.SelectedItem; confidential.Attribute = (Attribute)attribute_Con_ListBox.SelectedItem; ResourceManager.mainWindowVM.Tips = "修改了Confidential:" + confidential; }
// 进程模板选中项变化的处理 private void process_ComboBox_Changed(object sender, SelectionChangedEventArgs e) { // 安全锁锁定时不做任何修改 if (TopoNodeEWVM.SafetyLock) { return; } // 清空属性列表 TopoNodeEWVM.TopoNode.Properties.Clear(); // 获取选中的Process ComboBox process_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "process_ComboBox"); if (process_ComboBox.SelectedItem == null) { return; } Process process = (Process)process_ComboBox.SelectedItem; // 构造这个属性列表 foreach (Attribute attribute in process.Attributes) { if (attribute.Type is UserType) // 复合类型 { ReferenceInstance referenceInstance = ReferenceInstance.build((UserType)attribute.Type, attribute.Identifier); TopoNodeEWVM.TopoNode.Properties.Add(referenceInstance); } else // 基本类型 { ValueInstance valueInstance = new ValueInstance(attribute.Type, attribute.Identifier); TopoNodeEWVM.TopoNode.Properties.Add(valueInstance); } } ResourceManager.mainWindowVM.Tips = "进程模板被修改为[" + process.Name + "],例化对象已重新生成"; }
// 初始化.cs文件中的数据绑定,一些不方便在xaml中绑定的部分在这里绑定 private void init_binding() { // 绑定结点颜色枚举 ComboBox color_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "color_ComboBox"); color_ComboBox.Items = TopoNode.NodeColors; }
public void Add_Attribute() { ListBox type_ListBox = ControlExtensions.FindControl <ListBox>(this, "type_ListBox"); if (type_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定成员类型!"; return; } TextBox attrId_TextBox = ControlExtensions.FindControl <TextBox>(this, "attrId_TextBox"); if (attrId_TextBox.Text == null || attrId_TextBox.Text.Length == 0) { ResourceManager.mainWindowVM.Tips = "需要给出成员名称!"; return; } // todo 变量名判重 Attribute attribute = new Attribute((sbid._M.Type)type_ListBox.SelectedItem, attrId_TextBox.Text); ((UserType_EW_VM)DataContext).UserType.Attributes.Add(attribute); ResourceManager.mainWindowVM.Tips = "为自定义类型[" + ((UserType_EW_VM)DataContext).UserType.Name + "]添加了成员变量:" + attribute; }
public void Update_Method() { ListBox method_ListBox = ControlExtensions.FindControl <ListBox>(this, "method_ListBox"); if (method_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定要更新的Method!"; return; } ComboBox returnType_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "returnType_ComboBox"); if (returnType_ComboBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定自定Method的返回类型!"; return; } TextBox methodName_TextBox = ControlExtensions.FindControl <TextBox>(this, "methodName_TextBox"); if (methodName_TextBox.Text == null || methodName_TextBox.Text.Length == 0) { ResourceManager.mainWindowVM.Tips = "需要给出自定Method的方法名!"; return; } if (((Method)method_ListBox.SelectedItem).Name != methodName_TextBox.Text && Checker.UserType_Contain_PropName(VM.UserType, methodName_TextBox.Text)) { ResourceManager.mainWindowVM.Tips = "标识符重复!"; return; } ObservableCollection <Attribute> parameters = ((UserType_EW_VM)DataContext).Params; Method method = new Method( (Type)returnType_ComboBox.SelectedItem, methodName_TextBox.Text, parameters, Crypto.None ); string achieve = ((Method)method_ListBox.SelectedItem).Achieve; method.Achieve = achieve; VM.UserType.Methods[method_ListBox.SelectedIndex] = method; ResourceManager.mainWindowVM.Tips = "更新了自定Method:" + method; // 更新完成后,要将临时参数列表拿掉,这样再向临时参数列表中添加/更新内容也不会影响刚刚添加的Method // ((UserType_EW_VM)DataContext).Params = new ObservableCollection<Attribute>(); // 【11月10日bugfix】更新完成后,将这个临时参数表复制一份保留 ObservableCollection <Attribute> tmp = new ObservableCollection <Attribute>(); foreach (Attribute attribute in ((UserType_EW_VM)DataContext).Params) { tmp.Add(new Attribute(attribute)); } ((UserType_EW_VM)DataContext).Params = tmp; }
private void init_event() { // 锁头按下时反转IsLock属性 Lock lockShape = ControlExtensions.FindControl <Lock>(this, "lockShape"); lockShape.Tapped += reverseIsLock; }
// 写入继承关系 public void Set_Parent() { ComboBox userType_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "userType_ComboBox"); if (userType_ComboBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定UserType!"; return; } // 选中的UserType UserType userType = (UserType)userType_ComboBox.SelectedItem; // 当前UserType UserType nowUserType = ((UserType_EW_VM)DataContext).UserType; // 判断环形继承 if (JudgeLoopExtend(userType)) { string way = userType.Parent == nowUserType ? "直接" : "间接"; ResourceManager.mainWindowVM.Tips = "禁止!该操作会引起环形继承,因为" + userType.Name + way + "继承了" + nowUserType.Name; return; } // 设置继承关系 nowUserType.Parent = userType; ResourceManager.mainWindowVM.Tips = "写入继承关系,使继承自UserType:" + userType.Name; }
public void Update_Param() { ListBox param_ListBox = ControlExtensions.FindControl <ListBox>(this, "param_ListBox"); if (param_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要在临时参数列表中选定要修改的参数!"; return; } ComboBox paramType_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "paramType_ComboBox"); if (paramType_ComboBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定参数类型!"; return; } TextBox paramName_TextBox = ControlExtensions.FindControl <TextBox>(this, "paramName_TextBox"); if (paramName_TextBox.Text == null || paramName_TextBox.Text.Length == 0) { ResourceManager.mainWindowVM.Tips = "需要提供参数名称!"; return; } Attribute attribute = (Attribute)param_ListBox.SelectedItem; attribute.Type = (Type)paramType_ComboBox.SelectedItem; attribute.Identifier = paramName_TextBox.Text; ResourceManager.mainWindowVM.Tips = "已在临时参数列表中更新参数:" + attribute; }
public void Update_CommMethodPair() { ListBox commMethodPair_ListBox = ControlExtensions.FindControl <ListBox>(this, "commMethodPair_ListBox"); if (commMethodPair_ListBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要在域内成员列表中选定要修改的成员!"; return; } ComboBox process_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "process_ComboBox"); if (process_ComboBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定进程模板!"; return; } ComboBox commMethod_ComboBox = ControlExtensions.FindControl <ComboBox>(this, "commMethod_ComboBox"); if (commMethod_ComboBox.SelectedItem == null) { ResourceManager.mainWindowVM.Tips = "需要选定通信方法!"; return; } CommMethodPair commMethodPair = (CommMethodPair)commMethodPair_ListBox.SelectedItem; commMethodPair.Process = (Process)process_ComboBox.SelectedItem; commMethodPair.CommMethod = (CommMethod)commMethod_ComboBox.SelectedItem; ResourceManager.mainWindowVM.Tips = "已在临时域内成员列表中更新成员:" + commMethodPair; }