/// <summary> /// 初始化 /// </summary> public void Init() { if (source != null) { return; } source = this.DataContext as IParatItem; if (source == null) { return; } if (IsAsInput) { IParaItemForEnum forenum = IParaItemForEnum.GetInstance(); IReflexui iref = forenum.GetControlType(source.PIEnum); if (iref != null) { iref.Bind(source, "Value"); this.content.Child = iref as Control; } } this.propertyCombox.ItemsSource = ScriptLayout.IPropertys; this.propertyCombox.DisplayMemberPath = "Name"; if ((source as ParatItem) != null && (source as ParatItem).LinkIProperty != null) { isopen.IsChecked = true; } else { isopen.IsChecked = false; } }
public void Bind(IParatItem Source, string PropertyName) { this.paraItem = Source; this.propertyName = PropertyName; this.content.ItemsSource = Source.EnumDatas; Tools.Bind(Source, this.content, PropertyName, ComboBox.SelectedItemProperty, mode: BindingMode.TwoWay); }
/// <summary> /// 添加输出参数 /// </summary> /// <param name="ipt"></param> public override void AddOutputData(IParatItem ipt) { //StackOutput si = new StackOutput(); //si.SetOrigValues(iPropertys, ipt); //si.Margin = new Thickness(2); //si.Height = 25; //right.Children.Add(si); }
/// <summary> /// 在内存管理中设置属性的值 /// </summary> /// <param name="item"></param> protected override void SetValue(IParatItem item) { ParatItem ipt = item as ParatItem; if (ipt.LinkIProperty != null) { manager.GetValue(ipt.LinkIProperty.Id).SetValue(ipt.LinkIProperty.Name, ipt.Value); } }
/// <summary> /// 取消MLParatItemLayout上所有的连线 /// </summary> /// <param name="mpl"></param> protected void removeMLParamitemBezierLine(MLParatItemLayout mpl) { List <BezierLine> bs = mpl.CancleLink(); foreach (var item in bs) { Del(item); } IParatItem ip = mpl.DataContext as IParatItem; ip.LinkIParatItem = null; bs.Clear(); }
/// <summary> /// 设置数据源 /// </summary> /// <param name="ips"></param> public void SetOrigValues(ObservableCollection <IPropertyIt> ips, IParatItem ip) { propertyCombox.ItemsSource = ips; propertyCombox.DisplayMemberPath = "Name"; //output.DataContext = ip; //output.InitParatItemLayout(); this.DataContext = ip; paramter = ip as ParatItem; if (paramter.LinkIProperty != null) { this.isopen.IsChecked = true; } }
/// <summary> /// 获取属性的值 /// </summary> /// <param name="item"></param> /// <returns></returns> protected override object GetValue(IParatItem item) { ParatItem ipt = item as ParatItem; if (ipt.LinkIProperty != null) { return(manager.GetValue(ipt.LinkIProperty.Id).GetValue(ipt.LinkIProperty.Name)); } else { return(ipt.Value); } }
/// <summary> /// 设置数据源 /// </summary> /// <param name="fbs"></param> public void SetOrigValues(ObservableCollection <IPropertyIt> ips, IParatItem ip) { this.propertyCombox.ItemsSource = ips; this.propertyCombox.DisplayMemberPath = "Name"; if (ips.Count > 0) { propertyCombox.SelectedIndex = 0; } //input.DataContext = ip; //input.InitParatItemLayout(); this.DataContext = ip; paramter = ip as ParatItem; }
/// <summary> /// 添加一个输入 /// </summary> /// <param name="ipt"></param> public override void AddInputData(IParatItem ipt) { InputParaItemLayout ipl = new InputParaItemLayout(); ipl.Margin = new Thickness(4, 4, 4, 4); ipl.MouseDown += ParaItemLayout_MouseDown; ipl.MouseUp += ParaItemLayout_MouseUp; ipl.MouseMove += ParaItemLayout_MouseMove; ipl.MouseEnter += ParaItemLayout_MouseEnter; ipl.MouseLeave += ParaItemLayout_MouseLeave; ipl.Height = 25; ipl.DataContext = ipt; ipl.UIMain = this.UIMain; ipl.InitParatItemLayout(); left.Children.Add(ipl); }
/// <summary> /// 添加一个输出 /// </summary> /// <param name="ipt"></param> public override void AddOutputData(IParatItem ipt) { OutputParaItemLayout opl = new OutputParaItemLayout(); opl.Margin = new Thickness(4, 4, 4, 4); opl.MouseDown += ParaItemLayout_MouseDown; opl.MouseUp += ParaItemLayout_MouseUp; opl.MouseMove += ParaItemLayout_MouseMove; opl.MouseEnter += ParaItemLayout_MouseEnter; opl.MouseLeave += ParaItemLayout_MouseLeave; opl.Height = 25; opl.DataContext = ipt; opl.HorizontalAlignment = HorizontalAlignment.Right; opl.UIMain = this.UIMain; opl.InitParatItemLayout(); right.Children.Add(opl); }
/// <summary> /// 获取iitembox /// </summary> /// <typeparam name="IBox"></typeparam> /// <typeparam name="IParat"></typeparam> /// <param name="tdfather"></param> /// <param name="attribute"></param> /// <returns></returns> public static IItemBox GetIItemboxByScriptMeth <IBox, IParat>(TreeData tdfather, ScriptMethAttribute attribute) { IBox box = (IBox)Activator.CreateInstance(typeof(IBox)); IItemBox opitem = box as IItemBox; if (attribute != null) { opitem.Name = attribute.Name; opitem.ScriptUrl = attribute.Url; opitem.BoxType = attribute.ItemBoxEnum; opitem.TipText = attribute.Describe; if (attribute.InputData.Count > 0) { foreach (var item in attribute.InputData) { IParat ipa = (IParat)Activator.CreateInstance(typeof(IParat)); IParatItem op = ipa as IParatItem; //ParatItem op = new ParatItem(item.Name, LogLib.TClassOption.GetEnumTypeByString<ParaItemEnum>(item.Type), item.EnumDatas) op.Name = item.Name; op.PIEnum = LogLib.TClassOption.GetEnumTypeByString <ParaItemEnum>(item.Type); op.EnumDatas = item.EnumDatas; op.Value = item.DefultValue; opitem.AddInput(op); op.TipText = item.TipText; } } if (attribute.OutputData.Count > 0) { foreach (var item in attribute.OutputData) { IParat ipa = (IParat)Activator.CreateInstance(typeof(IParat)); IParatItem op = ipa as IParatItem; op.Name = item.Name; op.PIEnum = LogLib.TClassOption.GetEnumTypeByString <ParaItemEnum>(item.Type); op.EnumDatas = item.EnumDatas; op.Value = item.DefultValue; opitem.AddOutput(op); op.TipText = item.TipText; } } tdfather.Children.Add(new TreeData(opitem)); } return(opitem); }
/// <summary> /// 连接贝塞尔曲线到2个点 /// </summary> /// <param name="bz"></param> /// <param name="mlp1"></param> /// <param name="mlp2"></param> public void LinkBezier(BezierLine bz, MLParatItemLayout mlp1, MLParatItemLayout mlp2, bool isAddtoCanvas = true) { if (bz == null || mlp1 == null || mlp2 == null) { return; } BezierLine ol = mlp1.SetLink(bz); if (ol != null) { Del(ol); } ol = mlp2.SetLink(bz); if (ol != null) { Del(ol); } bz.ClearStartBind(); bz.ClearEndBind(); if (mlp1 as BezierLinkLayout.ScriptIParameterLayout.InputParaItemLayout != null) { bz.BindPointStart(mlp2, "LinkPosition"); bz.BindPointEnd(mlp1, "LinkPosition"); } else { bz.BindPointStart(mlp1, "LinkPosition"); bz.BindPointEnd(mlp2, "LinkPosition"); } IParatItem ipl = (bz.LeftElement.DataContext as IParatItem); IParatItem ipr = (bz.RightElement.DataContext as IParatItem); ipl.LinkIParatItem = ipr; ipr.LinkIParatItem = ipl; bz.Color = ipl.Color; if (isAddtoCanvas) { Add(bz); } }
/// <summary> /// 在tdfather子内容中添加一个对象的方法作为itembox /// </summary> /// <param name="tdfather"></param> /// <param name="obj"></param> /// <param name="medthname"></param> public static IItemBox AddMeodthToItemBox <IBox, IParat>(TreeData tdfather, ScriptFunction sf) { string medthname = sf.GetMethodInfo().Name; IBox box = (IBox)Activator.CreateInstance(typeof(IBox)); IItemBox opitem = box as IItemBox; if (opitem == null) { throw new Exception("IBox, 不是一个有效的实现于IItemBox的类"); } opitem.BoxType = ItemBoxEnum.FUNCTION; MethodInfo minfo = sf.GetMethodInfo(); if (minfo != null) { ScriptMethAttribute attribute = minfo.GetCustomAttribute(typeof(ScriptMethAttribute), false) as ScriptMethAttribute; if (attribute != null) { if (attribute.Name != "") { opitem.Name = attribute.Name; } else { opitem.Name = medthname; } opitem.BoxType = attribute.ItemBoxEnum; opitem.TipText = attribute.Describe; if (attribute.InputData.Count > 0) { foreach (var item in attribute.InputData) { IParat ipa = (IParat)Activator.CreateInstance(typeof(IParat)); IParatItem op = ipa as IParatItem; //ParatItem op = new ParatItem(item.Name, LogLib.TClassOption.GetEnumTypeByString<ParaItemEnum>(item.Type), item.EnumDatas) op.Name = item.Name; op.PIEnum = LogLib.TClassOption.GetEnumTypeByString <ParaItemEnum>(item.Type); op.EnumDatas = item.EnumDatas; op.Value = item.DefultValue; opitem.AddInput(op); op.TipText = item.TipText; } } if (attribute.OutputData.Count > 0) { foreach (var item in attribute.OutputData) { IParat ipa = (IParat)Activator.CreateInstance(typeof(IParat)); IParatItem op = ipa as IParatItem; op.Name = item.Name; op.PIEnum = LogLib.TClassOption.GetEnumTypeByString <ParaItemEnum>(item.Type); op.EnumDatas = item.EnumDatas; op.Value = item.DefultValue; opitem.AddOutput(op); op.TipText = item.TipText; } } tdfather.Children.Add(new TreeData(opitem)); } } //opitem = null; return(opitem); }
/// <summary> /// 绑定数据 /// </summary> /// <param name="ipt"></param> public override void SetValueBind(IParatItem ipt) { Tools.Bind(ipt, value, "Value", ComboBox.SelectedItemProperty); }
public virtual void SetValueBind(IParatItem ipt) { }
public void Bind(IParatItem Source, string PropertyName) { this.paraItem = Source; this.propertyName = PropertyName; Tools.Bind(Source, this.content, PropertyName, TextBox.TextProperty, mode: BindingMode.TwoWay); }
/// <summary> /// 绑定数据 /// </summary> /// <param name="ipt"></param> public override void SetValueBind(IParatItem ipt) { Tools.Bind(ipt, value, "Value", TextBox.TextProperty); }