using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Data; using Aitex.Core.UI.ControlDataContext; using System.Windows.Media; namespace Aitex.Core.UI.Converters { public class MFC4ContentConvert : IMultiValueConverter { public object Convert(object[] FlowMOSourceDataList, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string content = ""; AnalogDeviceDataItem mfcSourceData = FlowMOSourceDataList[0] as AnalogDeviceDataItem; AnalogDeviceDataItem mfcInjectData = FlowMOSourceDataList[1] as AnalogDeviceDataItem; AnalogDeviceDataItem mfcDiluteData = FlowMOSourceDataList[2] as AnalogDeviceDataItem; if (mfcSourceData != null) { bool isAirFlowMultiControlMFC = (bool)(FlowMOSourceDataList[3]); if (isAirFlowMultiControlMFC && mfcInjectData != null && mfcDiluteData!=null) { if (mfcSourceData == null) return content; var source = mfcSourceData.FeedBack; var inject = mfcInjectData.FeedBack; var dilute = mfcDiluteData.FeedBack; var flow = source + dilute; if (flow == 0) { content = "0.00"; } else { double val = ((source * inject) / flow); content = val >= 10 ? val.ToString("0.0") : val.ToString("0.00"); } } else { if (mfcSourceData == null) content = "-"; else if (mfcSourceData.FeedBack >= 10000) content = mfcSourceData.FeedBack.ToString("F0"); else if (mfcSourceData.FeedBack >= 10) content = mfcSourceData.FeedBack.ToString("0.0"); else content = mfcSourceData.FeedBack.ToString("0.00"); } } return content; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) { return null; } } public class MFC4ColorConvert : IMultiValueConverter { public object Convert(object[] FlowMOSourceDataList, Type targetType, object parameter, System.Globalization.CultureInfo culture) { SolidColorBrush borderBrush = Brushes.Transparent; AnalogDeviceDataItem mfcSourceData = FlowMOSourceDataList[0] as AnalogDeviceDataItem; AnalogDeviceDataItem mfcInjectData = FlowMOSourceDataList[1] as AnalogDeviceDataItem; AnalogDeviceDataItem mfcDiluteData = FlowMOSourceDataList[2] as AnalogDeviceDataItem; if (mfcSourceData != null) { bool isAirFlowMultiControlMFC = (bool)(FlowMOSourceDataList[3]); if (isAirFlowMultiControlMFC && mfcInjectData != null && mfcDiluteData != null) { if (mfcSourceData.IsWarning) { borderBrush = Brushes.Red; } if (mfcInjectData.IsWarning) { borderBrush = Brushes.Red; } if (mfcDiluteData.IsWarning) { borderBrush = Brushes.Red; } } else { if (mfcSourceData != null && mfcSourceData.IsWarning) { borderBrush = Brushes.Red; } } } return borderBrush; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) { return null; } } public class MFC4ToolTipConvert : IMultiValueConverter { public object Convert(object[] FlowMOSourceDataList, Type targetType, object parameter, System.Globalization.CultureInfo culture) { StringBuilder tooltip = new StringBuilder(); AnalogDeviceDataItem mfcSourceData = FlowMOSourceDataList[0] as AnalogDeviceDataItem; AnalogDeviceDataItem mfcInjectData = FlowMOSourceDataList[1] as AnalogDeviceDataItem; AnalogDeviceDataItem mfcDiluteData = FlowMOSourceDataList[2] as AnalogDeviceDataItem; if (mfcSourceData != null) { bool isAirFlowMultiControlMFC = (bool)(FlowMOSourceDataList[3]); if (isAirFlowMultiControlMFC && mfcInjectData != null && mfcDiluteData != null) { if (mfcSourceData.IsWarning) { tooltip.AppendLine(string.Format("mfc:{0},设备名:{1} 报警! 流量:{2}", mfcSourceData.DeviceId, mfcSourceData.DeviceName, mfcSourceData.FeedBack.ToString("F1"))); } if (mfcInjectData.IsWarning) { tooltip.AppendLine(string.Format("mfc:{0},设备名:{1} 报警! 流量:{2}", mfcInjectData.DeviceId, mfcInjectData.DeviceName, mfcInjectData.FeedBack.ToString("F1"))); } if (mfcDiluteData.IsWarning) { tooltip.AppendLine(string.Format("mfc:{0},设备名:{1} 报警! 流量:{2}", mfcDiluteData.DeviceId, mfcDiluteData.DeviceName, mfcDiluteData.FeedBack.ToString("F1"))); } } else { if (mfcSourceData != null && mfcSourceData.IsWarning) { tooltip.AppendLine(string.Format("mfc:{0},设备名:{1} 报警! 流量:{2}", mfcSourceData.DeviceId, mfcSourceData.DeviceName, mfcSourceData.FeedBack.ToString("F1"))); } } } return tooltip; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) { return null; } } }