using FLY.ControlLibrary; using FLY.Thick.BulkDataModule; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using ThickTcpUiInWindow.UIModule; namespace FLY.Thick.BlowingScan.UI.Client.UIModule { /// <summary> /// ScanGraph2.xaml 的交互逻辑 /// </summary> public partial class ScanGraph2 : UserControl { TDGage gage; ScanGraphItemParam graphparam; public ScanGraph2() { InitializeComponent(); } /// <summary> /// /// </summary> /// <param name="id"></param> public void Init(int id) { //查找参数 graphparam = ScanGraphParams.Current.Items.Find(p => p.ID == id); if (graphparam == null) { graphparam = new ScanGraphItemParam() { UiModule="scangraph2", ID = id }; ScanGraphParams.Current.Items.Add(graphparam); ScanGraphParams.Current.Save(); } //获取设备 gage = Application.Current.Properties["ThickGage"] as TDGage; GraphScan2 graph = graphscan; Misc.BindingOperations.SetBinding(graphparam, "ChartType", () => { if (graphparam.ChartType == "Line") graph.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; else graph.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column; }); graph.DataContext = graphparam; graph.SetBinding(GraphScan.TitleProperty, new Binding("Title")); graph.SetBinding(Grid.ColumnProperty, new Binding("Column")); graph.SetBinding(Grid.RowProperty, new Binding("Row")); graph.SetBinding(Grid.ColumnSpanProperty, new Binding("ColumnSpan")); graph.SetBinding(Grid.RowSpanProperty, new Binding("RowSpan")); graph.SetBinding(GraphScan.IsAutoTargetProperty, new Binding("IsAutoTarget")); graph.SetBinding(GraphScan.IsPercentProperty, new Binding("IsPercent")); graph.SetBinding(GraphScan.YRangePercentProperty, new Binding("YRangePercent")); graph.SetBinding(GraphScan.IsReversedProperty, new Binding("IsReversed") { Source = ScanGraphParams.Current }); graph.SetBinding(GraphScan.LeftRightIsVisableProperty, new Binding("LRIsVisable") { Source = ScanGraphParams.Current }); graph.SetBinding(GraphScan.LeftRightIsReversedProperty, new Binding("LRIsReversed") { Source = ScanGraphParams.Current }); //报警线 { graph.HasCtrlLine = false; } { graph.SetBinding(GraphScan.FirstBoltNoProperty, new Binding("FirstBoltNo") { Source = gage.mDynAreaService.mDynArea }); //graph.SetValue(GraphScan.FirstIndexProperty, 0); //graph.SetBinding(GraphScan.LastIndexProperty, new Binding("NBolts") { Source = gage.mDynArea }); Binding b0 = new Binding("FirstBoltNo") { Source = gage.mDynAreaService.mDynArea }; Binding b1 = new Binding("DataBoltNoBegin") { Source = gage.mDynAreaService.mDynArea }; Binding b2 = new Binding("DataBoltNoEnd") { Source = gage.mDynAreaService.mDynArea }; Binding b3 = new Binding("ScanBoltNoBegin") { Source = gage.mDynAreaService.mDynArea }; Binding b4 = new Binding("ScanBoltNoEnd") { Source = gage.mDynAreaService.mDynArea }; { MultiBinding mb = new MultiBinding() { Mode = BindingMode.OneWay, Converter = new ThickTcpUiInWindow.Converter.BoltNo2BoltIndexConverter() }; mb.Bindings.Add(b0); mb.Bindings.Add(b1); graph.SetBinding(GraphScan.DataFirstProperty, mb); } { MultiBinding mb = new MultiBinding() { Mode = BindingMode.OneWay, Converter = new ThickTcpUiInWindow.Converter.BoltNo2BoltIndexConverter() }; mb.Bindings.Add(b0); mb.Bindings.Add(b2); graph.SetBinding(GraphScan.DataLastProperty, mb); } { MultiBinding mb = new MultiBinding() { Mode = BindingMode.OneWay, Converter = new ThickTcpUiInWindow.Converter.BoltNo2BoltIndexConverter() }; mb.Bindings.Add(b0); mb.Bindings.Add(b3); graph.SetBinding(GraphScan.FirstIndexProperty, mb); } { MultiBinding mb = new MultiBinding() { Mode = BindingMode.OneWay, Converter = new ThickTcpUiInWindow.Converter.BoltNo2BoltIndexConverter() }; mb.Bindings.Add(b0); mb.Bindings.Add(b4); graph.SetBinding(GraphScan.LastIndexProperty, mb); } } graph.SetBinding(GraphScan.TargetProperty, new Binding("Target") { Source = gage.mDynAreaService.mDynArea }); graph.SetBinding(GraphScan.AlarmProperty, new Binding("Alarm") { Source = gage.mDynAreaService.mDynArea }); //bulkdata 数据绑定!!! BulkDataServiceClientAdv.BulkDataGraphFrame bulkdata_client = new BulkDataServiceClientAdv.BulkDataGraphFrame(); //graphparam 绑定到 bulkdataclient Misc.BindingOperations.SetBinding(graphparam, "BM", bulkdata_client, "BM"); Misc.BindingOperations.SetBinding(graphparam, "Mix", bulkdata_client, "Mix"); graph.SetBinding(GraphScan.Title2Property, new Binding("Info") { Source = bulkdata_client }); graph.SetBinding(GraphScan.IsValidProperty, new Binding("Type") { Source = bulkdata_client, Converter = new ThickTcpUiInWindow.Converter.Equals2BoolConverter(), ConverterParameter = FR_DATA_TYPE.VALID }); graph.DataSource = bulkdata_client.Frame; BulkDataServiceClientAdv.BulkDataGraphFrame bulkdata_client2 = new BulkDataServiceClientAdv.BulkDataGraphFrame(); //graphparam 绑定到 bulkdataclient bulkdata_client2.BM = 0; bulkdata_client2.Mix = 1; graph.DataSource2 = bulkdata_client2.Frame; graph.ShowSettingDialogEvent += new EventHandler(delegate (object sender, EventArgs e) { ScanGraphConfig window = new ScanGraphConfig(); window.Init((sender as GraphScan).DataContext as ScanGraphItemParam); window.Owner = FLY.ControlLibrary.COMMON.GetWindow(graph); window.ShowDialog(); }); gage.mBulkDataClient.Add(bulkdata_client); gage.mBulkDataClient.Add(bulkdata_client2); } } public class UIModule_ScanGraph2 : FLY.UI.Module.IUIModule { /// <summary> /// 控件标题 /// 它的值取决于culture /// </summary> public string Title { get { return Application.Current.FindResource("strScanGraph2") as string; } } /// <summary> /// 控件 /// 创建时,需要给它唯一ID,让加载自己的数据 /// </summary> /// <param name="id"></param> /// <returns></returns> public FrameworkElement GetComponent(int id) { ScanGraph2 graph = new ScanGraph2(); graph.Init(id); return graph; } /// <summary> /// 控件缩略图,用于编辑界面时,大致看看 /// 创建时,需要给它唯一ID,让加载自己的数据 /// </summary> /// <param name="id"></param> /// <returns></returns> public FrameworkElement GetThumbnail(int id) { return new System.Windows.Controls.Grid(); } /// <summary> /// 给出全部控件ID, 控件自行删除没有的参数 /// </summary> /// <param name="IDs"></param> public void MatchParam(int[] IDs) { ScanGraphParams.Current.MatchParam("scangraph2",IDs); } } }