Commit c9a7a9f5 authored by 潘栩锋's avatar 潘栩锋 🚴

把 ThickInWindowTcp 的ScanGraph, TrendGraph 移到 FLY.Thick.Blowing.UI.Fix.Client

parent d2a3ab60
......@@ -171,6 +171,18 @@
<Compile Include="UIModule\ScanGraphCircular\ScanGraphCircularConfig.xaml.cs">
<DependentUpon>ScanGraphCircularConfig.xaml</DependentUpon>
</Compile>
<Compile Include="UIModule\ScanGraph\ScanGraph.xaml.cs">
<DependentUpon>ScanGraph.xaml</DependentUpon>
</Compile>
<Compile Include="UIModule\ScanGraph\ScanGraphConfig.xaml.cs">
<DependentUpon>ScanGraphConfig.xaml</DependentUpon>
</Compile>
<Compile Include="UIModule\TrendGraph\TrendGraph.xaml.cs">
<DependentUpon>TrendGraph.xaml</DependentUpon>
</Compile>
<Compile Include="UIModule\TrendGraph\TrendGraphConfig.xaml.cs">
<DependentUpon>TrendGraphConfig.xaml</DependentUpon>
</Compile>
<Compile Include="WdIOTip.xaml.cs">
<DependentUpon>WdIOTip.xaml</DependentUpon>
</Compile>
......@@ -265,6 +277,22 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="UIModule\ScanGraph\ScanGraph.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="UIModule\ScanGraph\ScanGraphConfig.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="UIModule\TrendGraph\TrendGraph.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="UIModule\TrendGraph\TrendGraphConfig.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="WdIOTip.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
......@@ -327,14 +355,16 @@
<ProjectReference Include="..\..\Project.FLY.Integrated\FLY.Integrated\FLY.Integrated.csproj">
<Project>{83971044-3f20-4912-9528-52cbebba0999}</Project>
<Name>FLY.Integrated</Name>
</ProjectReference> <ProjectReference Include="..\..\Project.FLY.ThickHeatAnalyst.Fix\FLY.HeatingHelper.UI\FLY.HeatingHelper.UI.csproj">
</ProjectReference>
<ProjectReference Include="..\..\Project.FLY.ThickHeatAnalyst.Fix\FLY.HeatingHelper.UI\FLY.HeatingHelper.UI.csproj">
<Project>{276ee86a-0961-4c69-a38a-696f4d76e931}</Project>
<Name>FLY.HeatingHelper.UI</Name>
</ProjectReference>
<ProjectReference Include="..\..\Project.FLY.ThickHeatAnalyst.Fix\FLY.HeatingHelper\FLY.HeatingHelper.csproj">
<Project>{973f0eed-3181-4fb9-abd6-196a9e816b77}</Project>
<Name>FLY.HeatingHelper</Name>
</ProjectReference> <ProjectReference Include="..\..\Project.FLY.Weight\FLY.Weight.UI.Client\FLY.Weight.UI.Client.csproj">
</ProjectReference>
<ProjectReference Include="..\..\Project.FLY.Weight\FLY.Weight.UI.Client\FLY.Weight.UI.Client.csproj">
<Project>{654515f2-caae-450b-a344-547321836e8f}</Project>
<Name>FLY.Weight.UI.Client</Name>
</ProjectReference>
......
......@@ -63,7 +63,7 @@ namespace FLY.Thick.Blowing.UI.Fix.Client
mManager.myUIModules.Add("scangraph",
new FLY.UI.Module.UIModuleInfo()
{
UIModule = new ThickTcpUiInWindow.UIModule.UIModule_ScanGraph(),
UIModule = new UIModule.UIModule_ScanGraph(),
Param = new FLY.UI.Module.UIModuleParam()
{
IsGraphCompnonent = true
......@@ -72,7 +72,7 @@ namespace FLY.Thick.Blowing.UI.Fix.Client
mManager.myUIModules.Add("trendgraph",
new FLY.UI.Module.UIModuleInfo()
{
UIModule = new ThickTcpUiInWindow.UIModule.UIModule_TrendGraph(),
UIModule = new UIModule.UIModule_TrendGraph(),
Param = new FLY.UI.Module.UIModuleParam()
{
IsGraphCompnonent = true
......
<Page
x:Class="FLY.Thick.Blowing.UI.Fix.Client.UIModule.ScanGraph"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ControlLibrary="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
mc:Ignorable="d"
Title="ScanGraph">
<Grid>
<ControlLibrary:GraphScan x:Name="graphscan"/>
</Grid>
</Page>
using FLY.ControlLibrary;
using FLY.Thick.BulkDataModule;
using FLY.UI.Module;
using System;
using System.Collections.Generic;
using System.ComponentModel;
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.Blowing.UI.Fix.Client.UIModule
{
/// <summary>
/// ScanGraph.xaml 的交互逻辑
/// </summary>
public partial class ScanGraph : Page
{
TDGage gage;
ScanGraphItemParam graphparam;
public ScanGraph()
{
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() { ID = id };
ScanGraphParams.Current.Items.Add(graphparam);
ScanGraphParams.Current.Save();
}
//获取设备
gage = Application.Current.Properties["ThickGage"] as TDGage;
GraphScan 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.SetValue(GraphScan.MarginProperty, new Thickness(5));
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.SetBinding(GraphScan.HasCtrlLineProperty, new Binding("Enable") { Source = gage.mScanWarningService });
Binding b0 = new Binding("Alarm") { Source = gage.mDynAreaService.mDynArea };
Binding b1 = new Binding("AlarmLine") { Source = gage.mScanWarningService };
{
MultiBinding mb = new MultiBinding() { Mode = BindingMode.OneWay, Converter = new CtrlLineConverter() };
mb.Bindings.Add(b0);
mb.Bindings.Add(b1);
graph.SetBinding(GraphScan.CtrlLineProperty, mb);
}
}
{
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 IsValidConverter() });
graph.DataSource = bulkdata_client.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();
});
//BulkDataServiceClientAdv mBulkDataClient;
//if(mBulkDataClients.ContainsKey(graphparam.BulkData))
// mBulkDataClient = mBulkDataClients[graphparam.BulkData];
//else
// mBulkDataClient = mBulkDataClients.First().Value;
gage.mBulkDataClient.Add(bulkdata_client);
}
}
/// <summary>
/// 扫描图的参数
/// </summary>
public class ScanGraphItemParam : ThickTcpUiInWindow.UIModule.UIModuleParam
{
public string UiModule { get; set; } = "scangraph";
/// <summary>
/// 曲线类型
/// </summary>
public string ChartType { get; set; } = "Column";
/// <summary>
/// 记录点
/// </summary>
public int BM { get; set; } = 0;
/// <summary>
/// Y轴比例
/// </summary>
public double YRangePercent { get; set; } = 3;
/// <summary>
/// 标题
/// </summary>
public string Title { get; set; } = "扫描图";
/// <summary>
/// 混合图
/// </summary>
public int Mix { get; set; } = 1;
/// <summary>
/// 自动目标值
/// </summary>
public bool IsAutoTarget { get; set; } = false;
/// <summary>
/// % 显示
/// </summary>
public bool IsPercent { get; set; } = false;
/// <summary>
///
/// </summary>
/// <returns></returns>
public override string[] GetSavePropertyNames()
{
List<string> names = new List<string>(base.GetSavePropertyNames());
names.AddRange(new string[]{
"UiModule",
"Title",
"ChartType",
"BM",
"Mix",
"YRangePercent",
"IsAutoTarget",
"IsPercent"
});
return names.ToArray();
}
}
/// <summary>
/// 全部扫描图的参数
/// </summary>
public class ScanGraphParams : UIModuleParams<ScanGraphItemParam>
{
/// <summary>
/// 主界面反向
/// </summary>
public bool IsReversed { get; set; }
/// <summary>
/// 显示 左右标示
/// </summary>
public bool LRIsVisable { get; set; } = false;
/// <summary>
/// 左右标示 反向
/// </summary>
public bool LRIsReversed { get; set; } = false;
/// <summary>
/// 扫描图轴间隔 ,单位分区
/// </summary>
public int XInterval { get; set; } = 10;
static ScanGraphParams()
{
Misc.SaveToXmlHepler.Regist(typeof(ScanGraphParams));
}
public ScanGraphParams()
{
string path = System.IO.Path.Combine(FLYLayout.BasePath, "scangraph.xml");
FilePath = path;
}
static ScanGraphParams current = null;
public static ScanGraphParams Current
{
get
{
if (current == null)
{
current = new ScanGraphParams();
current.Load();
}
return current;
}
}
public void MatchParam(string uiModule, int[] IDs)
{
if (Items.RemoveAll(i => { return (i.UiModule== uiModule) && (!IDs.Contains(i.ID)); }) > 0)
{
Save();
}
}
public override void MatchParam(int[] IDs)
{
MatchParam("scangraph", IDs);
}
public override string[] GetSavePropertyNames()
{
List<string> names = new List<string>(base.GetSavePropertyNames());
names.AddRange(new string[]{
"IsReversed",
"LRIsVisable",
"LRIsReversed",
"XInterval"
});
return names.ToArray();
}
}
/// <summary>
/// 扫描图控件模块
/// </summary>
public class UIModule_ScanGraph : IUIModule
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title
{
get
{
return Application.Current.FindResource("strScanGraph") as string;
}
}
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id)
{
ScanGraph graph = new ScanGraph();
graph.Init(id);
return graph;
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail(int id)
{
return new Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
ScanGraphParams.Current.MatchParam(IDs);
}
}
public class IsValidConverter : IValueConverter
{
#region IValueConverter 成员
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
FR_DATA_TYPE type = (FR_DATA_TYPE)value;
if (type == FR_DATA_TYPE.VALID)
return true;
else
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
public class CtrlLineConverter : IMultiValueConverter
{
/// <summary>
/// values[0] = int alarm, values[1] = double alarmline
/// </summary>
/// <param name="values"></param>
/// <param name="targetType"></param>
/// <param name="parameter"></param>
/// <param name="culture"></param>
/// <returns></returns>
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values.Count() != 2)
return null;
if ((!(values[0] is int)) || (!(values[1] is double)))
return null;
int alarm = (int)values[0];
double alarmline = (double)values[1];
return (int)(alarm * alarmline);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
<flyctrllib:WindowBigClose x:Class="FLY.Thick.Blowing.UI.Fix.Client.UIModule.ScanGraphConfig"
xmlns:flyctrllib="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
Title="ScanGraphConfig" SizeToContent="WidthAndHeight" >
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Converter/Dictionary_MyConv.xaml"/>
<!--<ResourceDictionary Source="pack://application:,,,/ThickTcpUiInWindow;component/Culture/StringResource.zh-CN.xaml"/>-->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid TextBlock.FontSize="24" TextBlock.FontStyle="Normal" >
<StackPanel Orientation="Vertical" Margin="5,20">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strTitle}" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding Title}" Tag="Full"/>
</StackPanel>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="高级" />
<ToggleButton x:Name="togglebutton_adv" Style="{StaticResource ToggleButtonStyle1}" HorizontalAlignment="Left" />
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5" Visibility="{Binding ElementName=togglebutton_adv, Path=IsChecked,Converter={StaticResource visbilityconv},ConverterParameter=Collapsed}">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strCurveType}"/>
<ComboBox HorizontalAlignment="Left" Width="120">
<ComboBoxItem IsSelected="{Binding ChartType, Converter={StaticResource e2bconv}, ConverterParameter=Line }">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent}" FontSize="32" Text="Line"/>
</ComboBoxItem>
<ComboBoxItem IsSelected="{Binding ChartType, Converter={StaticResource e2bconv}, ConverterParameter=Column }">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent}" FontSize="32" Text="Column"/>
</ComboBoxItem>
<ComboBoxItem IsSelected="{Binding ChartType, Converter={StaticResource e2bconv}, ConverterParameter=Area }">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent}" FontSize="32" Text="Area"/>
</ComboBoxItem>
</ComboBox>
</StackPanel>
</StackPanel>
</Grid>
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strMixCnt}" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding Mix}" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strMarkNo}" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding BM}" />
</StackPanel>
</StackPanel>
<Button Style="{StaticResource ButtonStyle_empty}" HorizontalAlignment="Right" Background="White" BorderThickness="0" VerticalAlignment="Bottom" Click="button1_Click" Margin="5">
<Path Data="{StaticResource Geometry_arrow-left-bold-circle}" Fill="{StaticResource Color_theme_activity}" Stretch="Fill" Height="50" Width="50" />
</Button>
<Button Style="{StaticResource ButtonStyle_empty}" HorizontalAlignment="Right" Background="White" BorderThickness="0" VerticalAlignment="Bottom" Click="button2_Click" Margin="5">
<Path Data="{StaticResource Geometry_arrow-right-bold-circle}" Fill="{StaticResource Color_theme_activity}" Stretch="Fill" Height="50" Width="50" />
</Button>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" >
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strAutoTarget}" />
<ToggleButton Style="{StaticResource ToggleButtonStyle1}" HorizontalAlignment="Left" IsChecked="{Binding IsAutoTarget}" />
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strPercentShow}" />
<ToggleButton Style="{StaticResource ToggleButtonStyle1}" HorizontalAlignment="Left" IsChecked="{Binding IsPercent}" />
</StackPanel>
<StackPanel Orientation="Horizontal" Visibility="{Binding ElementName=togglebutton_adv, Path=IsChecked,Converter={StaticResource visbilityconv},ConverterParameter=Collapsed}">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strAxisYMultiple}" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource TextBoxStyle_FieldContent}" Text="{Binding YRangePercent}" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strAxisXInterval}" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource TextBoxStyle_FieldContent}" Text="{Binding DataContext.XInterval,ElementName=stackpanel_params}" />
<TextBlock Style="{StaticResource TextBlockStyle_FieldContent_mm}" Text="{DynamicResource strBolt}"/>
</StackPanel>
</StackPanel>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" x:Name="stackpanel_params" Visibility="{Binding ElementName=togglebutton_adv, Path=IsChecked,Converter={StaticResource visbilityconv},ConverterParameter=Collapsed}">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strDirectionIsReversed}" />
<ToggleButton Style="{StaticResource ToggleButtonStyle1}" IsChecked="{Binding IsReversed}" HorizontalAlignment="Left"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strShowLR}" />
<ToggleButton Name="togglebutton_lrisv" Style="{StaticResource ToggleButtonStyle1}" IsChecked="{Binding LRIsVisable}" HorizontalAlignment="Left"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5" Visibility="{Binding IsChecked,Converter={StaticResource ResourceKey=visbilityconv},ConverterParameter=Collapsed, ElementName=togglebutton_lrisv}">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strLRIsReversed}" />
<ToggleButton Style="{StaticResource ToggleButtonStyle1}" IsChecked="{Binding LRIsReversed}" HorizontalAlignment="Left"/>
</StackPanel>
</StackPanel>
<Button Style="{StaticResource ButtonStyle2}" Content="{DynamicResource strSave}" Width="Auto" Margin="5" Click="button_save_Click"/>
</StackPanel>
</Grid>
</flyctrllib:WindowBigClose>
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.Shapes;
namespace FLY.Thick.Blowing.UI.Fix.Client.UIModule
{
/// <summary>
/// Window_graphscan.xaml 的交互逻辑
/// </summary>
public partial class ScanGraphConfig : FLY.ControlLibrary.WindowBigClose
{
ScanGraphItemParam graphparam_scan;
public ScanGraphConfig()
{
InitializeComponent();
}
public void Init(ScanGraphItemParam graphparam_scan)
{
this.graphparam_scan = graphparam_scan;
this.DataContext = graphparam_scan;
this.stackpanel_params.DataContext = ScanGraphParams.Current;
}
private void button_save_Click(object sender, RoutedEventArgs e)
{
ScanGraphParams.Current.Save();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
graphparam_scan.BM--;
}
private void button2_Click(object sender, RoutedEventArgs e)
{
graphparam_scan.BM++;
}
}
}
<Page x:Class="FLY.Thick.Blowing.UI.Fix.Client.UIModule.TrendGraph"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ControlLibrary="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
Title="TrendGraph">
<Grid>
<ControlLibrary:GraphRange x:Name="graphrange"/>
</Grid>
</Page>
using FLY.ControlLibrary;
using FLY.Thick.BulkDataModule;
using FLY.UI.Module;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
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;
namespace FLY.Thick.Blowing.UI.Fix.Client.UIModule
{
/// <summary>
/// TrendGraph.xaml 的交互逻辑
/// </summary>
public partial class TrendGraph : Page
{
TDGage gage;
TrendGraphItemParam graphparam;
public TrendGraph()
{
InitializeComponent();
}
/// <summary>
///
/// </summary>
/// <param name="id"></param>
public void Init(int id)
{
graphparam = TrendGraphParams.Current.Items.Find(p => p.ID == id);
if (graphparam == null)
{
graphparam = new TrendGraphItemParam() { ID = id };
TrendGraphParams.Current.Items.Add(graphparam);
TrendGraphParams.Current.Save();
}
//获取设备
gage = Application.Current.Properties["ThickGage"] as TDGage;
GraphRange graph = graphrange;
graph.DataContext = graphparam;
//graph.SetValue(GraphRange.MarginProperty, new Thickness(5));
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(GraphRange.DataCntProperty, new Binding("Len"));
graph.SetBinding(GraphRange.TitleProperty, new Binding("Title"));
graph.SetBinding(GraphRange.IsAutoTargetProperty, new Binding("IsAutoTarget"));
graph.SetBinding(GraphRange.IsPercentProperty, new Binding("IsPercent"));
graph.SetBinding(GraphRange.YRangePercentProperty, new Binding("YRangePercent"));
graph.SetBinding(GraphRange.TypeProperty, new Binding("Type"));
graph.SetBinding(GraphRange.XAxisTypeProperty, new Binding("XType"));
graph.SetBinding(GraphRange.TargetProperty, new Binding("Target") { Source = gage.mDynAreaService.mDynArea });
graph.SetBinding(GraphRange.AlarmProperty, new Binding("Alarm") { Source = gage.mDynAreaService.mDynArea });
BulkDataServiceClientAdv.BulkDataGraphTrend bulkdata_client = new BulkDataServiceClientAdv.BulkDataGraphTrend();
Misc.BindingOperations.SetBinding(graphparam, "BM", bulkdata_client, "BM", Misc.BindingOperations.BindingMode.OneWay);
Misc.BindingOperations.SetBinding(graphparam, "Mix", bulkdata_client, "Mix", Misc.BindingOperations.BindingMode.OneWay);
Misc.BindingOperations.SetBinding(graphparam, "Len", bulkdata_client, "Len", Misc.BindingOperations.BindingMode.OneWay);
Misc.BindingOperations.SetBinding(graphparam, new string[] { "BeginNo", "IsAll" }, delegate ()
{
if (graphparam.IsAll)
bulkdata_client.FromBoltNo = Misc.MyBase.NULL_VALUE;
else
bulkdata_client.FromBoltNo = graphparam.BeginNo;
});
Misc.BindingOperations.SetBinding(graphparam, "EndNo", bulkdata_client, "ToBoltNo", Misc.BindingOperations.BindingMode.OneWay);
GraphRangeDataValueChanged vc = new GraphRangeDataValueChanged();
vc.Init(bulkdata_client.Frame, graph);
graph.SetBinding(GraphRange.Title2Property, new Binding("Info") { Source = bulkdata_client });
graph.ShowSettingDialogEvent += new EventHandler(delegate (object sender, EventArgs e)
{
TrendGraphConfig w = new TrendGraphConfig();
TrendGraphItemParam graphparam_src = (sender as GraphRange).DataContext as TrendGraphItemParam;
w.DataContext = graphparam_src;
w.SaveEvent += (s, ea) =>
{
TrendGraphParams.Current.Save();
};
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(graph);
w.ShowDialog();
});
//BulkDataServiceClientAdv mBulkDataClient;
//if (mBulkDataClients.ContainsKey(graphparam.BulkData))
// mBulkDataClient = mBulkDataClients[graphparam.BulkData];
//else
// mBulkDataClient = mBulkDataClients.First().Value;
gage.mBulkDataClient.Add(bulkdata_client);
}
public class GraphRangeDataValueChanged
{
ObservableCollection<GraphRangeData> rangedata = new ObservableCollection<GraphRangeData>();
public void Init(ObservableCollection<TrendDataCell> Frame, GraphRange graph)
{
Frame.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(trenddata_CollectionChanged);
graph.DataSource = rangedata;
}
void trenddata_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
switch (e.Action)
{
case System.Collections.Specialized.NotifyCollectionChangedAction.Add:
foreach (TrendDataCell v in e.NewItems)
{
rangedata.Add(
new GraphRangeData()
{
Avg = v.Avg,
Sigma = v.Sigma,
Time = v.Time,
InCtrl = (v.Type == FR_DATA_TYPE.VALID)
});
}
break;
case System.Collections.Specialized.NotifyCollectionChangedAction.Reset:
{
rangedata.Clear();
}
break;
case System.Collections.Specialized.NotifyCollectionChangedAction.Replace:
{
for (int i = 0; i < e.OldItems.Count; i++)
{
TrendDataCell v = (TrendDataCell)e.NewItems[i];
rangedata[i + e.OldStartingIndex] = new GraphRangeData()
{
Avg = v.Avg,
Sigma = v.Sigma,
Time = v.Time,
InCtrl = (v.Type == FR_DATA_TYPE.VALID)
};
}
}
break;
case System.Collections.Specialized.NotifyCollectionChangedAction.Remove:
{
for (int i = 0; i < e.OldItems.Count; i++)
{
rangedata.RemoveAt(i + e.OldStartingIndex);
}
}
break;
}
}
}
}
/// <summary>
/// 趋势图的参数
/// </summary>
public class TrendGraphItemParam : ThickTcpUiInWindow.UIModule.UIModuleParam
{
private int len = 120;
/// <summary>
/// 数据量
/// </summary>
public int Len
{
get { return len; }
set
{
if (len != value)
{
len = value;
OnPropertyChanged("Len");
}
}
}
private int beginno = 0;
/// <summary>
/// 统计开始数据序号
/// </summary>
public int BeginNo
{
get
{
return beginno;
}
set
{
if (beginno != value)
{
beginno = value;
OnPropertyChanged("BeginNo");
}
}
}
private int endno = 20;
/// <summary>
/// 统计结束数据序号
/// </summary>
public int EndNo
{
get { return endno; }
set
{
if (endno != value)
{
endno = value;
OnPropertyChanged("EndNo");
}
}
}
private bool isall = true;
/// <summary>
/// 全部数据
/// </summary>
public bool IsAll
{
get { return isall; }
set
{
if (isall != value)
{
isall = value;
OnPropertyChanged("IsAll");
}
}
}
private FLY.ControlLibrary.GraphRangeType type = FLY.ControlLibrary.GraphRangeType.Avg;
/// <summary>
/// 曲线类型
/// </summary>
public FLY.ControlLibrary.GraphRangeType Type
{
get { return type; }
set
{
if (type != value)
{
type = value;
OnPropertyChanged("Type");
}
}
}
private FLY.ControlLibrary.GraphRangeXAxisType xtype = FLY.ControlLibrary.GraphRangeXAxisType.Time;
/// <summary>
/// X轴类型
/// </summary>
public FLY.ControlLibrary.GraphRangeXAxisType XType
{
get { return xtype; }
set
{
if (xtype != value)
{
xtype = value;
OnPropertyChanged("XType");
}
}
}
private int bm = 0;
/// <summary>
/// 记录点
/// </summary>
public int BM
{
get
{
return bm;
}
set
{
if (bm != value)
{
bm = value;
OnPropertyChanged("BM");
}
}
}
private double _yrangepercent = 3;
/// <summary>
/// Y轴比例
/// </summary>
public double YRangePercent
{
get
{
return _yrangepercent;
}
set
{
_yrangepercent = value;
OnPropertyChanged("YRangePercent");
}
}
private string title = "趋势图";
/// <summary>
/// 标题
/// </summary>
public string Title
{
get { return title; }
set
{
if (title != value)
{
title = value;
OnPropertyChanged("Title");
}
}
}
private int mix = 1;
/// <summary>
/// 混合图
/// </summary>
public int Mix
{
get
{
return mix;
}
set
{
if (mix != value)
{
mix = value;
OnPropertyChanged("Mix");
}
}
}
private bool isautotarget = false;
/// <summary>
/// 自动目标值
/// </summary>
public bool IsAutoTarget
{
get
{
return isautotarget;
}
set
{
if (isautotarget != value)
{
isautotarget = value;
OnPropertyChanged("IsAutoTarget");
}
}
}
private bool ispercent = false;
/// <summary>
/// % 显示
/// </summary>
public bool IsPercent
{
get
{
return ispercent;
}
set
{
if (ispercent != value)
{
ispercent = value;
OnPropertyChanged("IsPercent");
}
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public override string[] GetSavePropertyNames()
{
List<string> names = new List<string>(base.GetSavePropertyNames());
names.AddRange(new string[]{
"Len", "BeginNo", "EndNo","IsAll","Type","XType",
"Title","BM","Mix","YRangePercent","IsAutoTarget","IsPercent"
});
return names.ToArray();
}
}
/// <summary>
/// 全部扫描图的参数
/// </summary>
public class TrendGraphParams : ThickTcpUiInWindow.UIModule.UIModuleParams<TrendGraphItemParam>
{
static TrendGraphParams()
{
Misc.SaveToXmlHepler.Regist(typeof(TrendGraphParams));
}
public TrendGraphParams()
{
string path = System.IO.Path.Combine(ThickTcpUiInWindow.UIModule.FLYLayout.BasePath, "trendgraph.xml");
FilePath = path;
}
static TrendGraphParams current = null;
public static TrendGraphParams Current
{
get
{
if (current == null)
{
current = new TrendGraphParams();
current.Load();
}
return current;
}
}
}
/// <summary>
/// 扫描图控件模块
/// </summary>
public class UIModule_TrendGraph : IUIModule
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title
{
get
{
return Application.Current.FindResource("strTrendGraph") as string;
}
}
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id)
{
TrendGraph graph = new TrendGraph();
graph.Init(id);
return graph;
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail(int id)
{
return new Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
TrendGraphParams.Current.MatchParam(IDs);
}
}
}
<flyctrllib:WindowBigClose x:Class="FLY.Thick.Blowing.UI.Fix.Client.UIModule.TrendGraphConfig"
xmlns:flyctrllib="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:props="clr-namespace:ThickTcpUiInWindow.Properties"
xmlns:my="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
Title="Window_graphtrend"
mc:Ignorable="d"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ThickTcpUiInWindow"
SizeToContent="WidthAndHeight"
>
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/ThickTcpUiInWindow;component/Converter/Dictionary_MyConv.xaml"/>
<!--<ResourceDictionary Source="pack://application:,,,/ThickTcpUiInWindow;component/Culture/StringResource.zh-CN.xaml"/>-->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid TextBlock.FontSize="24" TextBlock.FontStyle="Normal" Width="400">
<StackPanel Orientation="Vertical" Margin="5,20">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strTitle}" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding Title}" Tag="Full"/>
</StackPanel>
</StackPanel>
<WrapPanel Orientation="Horizontal">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strMixCnt}" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding Mix}" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strDataCnt}" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding Len}" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strCurveType}"/>
<ComboBox HorizontalAlignment="Left" MinWidth="100">
<ComboBoxItem IsSelected="{Binding Type, Converter={StaticResource e2bconv}, ConverterParameter={x:Static flyctrllib:GraphRangeType.Sigma2} }">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent}" FontSize="32" Text="2σ"/>
</ComboBoxItem>
<ComboBoxItem IsSelected="{Binding Type, Converter={StaticResource e2bconv}, ConverterParameter={x:Static flyctrllib:GraphRangeType.Avg}}">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent}" FontSize="32" Text="{DynamicResource strAvg}"/>
</ComboBoxItem>
<ComboBoxItem IsSelected="{Binding Type, Converter={StaticResource e2bconv}, ConverterParameter={x:Static flyctrllib:GraphRangeType.All}}" >
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent}" FontSize="32" >
<Run Text="2σ+"/><Run Text="{DynamicResource strAvg}"/>
</TextBlock>
</ComboBoxItem>
</ComboBox>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strAxisXType}" />
<ComboBox HorizontalAlignment="Left" MinWidth="100">
<ComboBoxItem IsSelected="{Binding XType, Converter={StaticResource e2bconv}, ConverterParameter={x:Static flyctrllib:GraphRangeXAxisType.Time}}">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent}" FontSize="32" Text="{DynamicResource strTime}"/>
</ComboBoxItem>
<ComboBoxItem IsSelected="{Binding XType, Converter={StaticResource e2bconv}, ConverterParameter={x:Static flyctrllib:GraphRangeXAxisType.Index}}">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldContent}" FontSize="32" Text="{DynamicResource strIndex}"/>
</ComboBoxItem>
</ComboBox>
</StackPanel>
<StackPanel Orientation="Horizontal" Visibility="{Binding IsChecked,Converter={StaticResource ResourceKey=visbilityconv},ConverterParameter=CollapsedWhenTrue, ElementName=toggleButton_isAll}">
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strBeginBoltNo}" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding BeginNo}" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5" >
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strEndBoltNo}" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding EndNo}" />
</StackPanel>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strAllAvg}" />
<ToggleButton Name="toggleButton_isAll" Style="{StaticResource ToggleButtonStyle1}" HorizontalAlignment="Left" IsChecked="{Binding IsAll}" />
</StackPanel>
</WrapPanel>
<StackPanel Orientation="Horizontal" >
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strAutoTarget}" />
<ToggleButton Style="{StaticResource ToggleButtonStyle1}" HorizontalAlignment="Left" IsChecked="{Binding IsAutoTarget}" />
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strPercentShow}" />
<ToggleButton Style="{StaticResource ToggleButtonStyle1}" HorizontalAlignment="Left" IsChecked="{Binding IsPercent}" />
</StackPanel>
<StackPanel Orientation="Vertical" Margin="5">
<TextBlock Style="{StaticResource ResourceKey=TextBlockStyle_FieldHeaderEditable}" Text="{DynamicResource strAxisYMultiple}" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource ResourceKey=TextBoxStyle_FieldContent}" Text="{Binding YRangePercent}" />
</StackPanel>
</StackPanel>
</StackPanel>
<Button Style="{StaticResource ButtonStyle2}" Content="{DynamicResource strSave}" Width="auto" Margin="5" Click="button_save_Click"/>
</StackPanel>
</Grid>
</flyctrllib:WindowBigClose >
\ No newline at end of file
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.Shapes;
using System.ComponentModel;
using ThickTcpUiInWindow.Converter;
using FLY.ControlLibrary;
namespace FLY.Thick.Blowing.UI.Fix.Client.UIModule
{
/// <summary>
/// Window_graphtrend.xaml 的交互逻辑
/// </summary>
public partial class TrendGraphConfig : FLY.ControlLibrary.WindowBigClose
{
public TrendGraphConfig()
{
InitializeComponent();
}
public event EventHandler SaveEvent;
private void button_save_Click(object sender, RoutedEventArgs e)
{
if (SaveEvent != null)
SaveEvent.Invoke(this, new EventArgs());
}
}
}
......@@ -73,14 +73,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TCPManager", "thick_public\
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Thick-Common", "Thick-Common", "{2488C4FB-3677-405B-BE1B-C9F532708DE3}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Thick-Scan", "Thick-Scan", "{58EB0B95-13F3-4D21-B6CD-B680E8D3D8AD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FLY.Thick.BlowingScan", "Project.FLY.Thick.BlowingScan\FLY.Thick.BlowingScan\FLY.Thick.BlowingScan.csproj", "{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FLY.Thick.BlowingScan.UI.Client", "Project.FLY.Thick.BlowingScan\FLY.Thick.BlowingScan.UI.Client\FLY.Thick.BlowingScan.UI.Client.csproj", "{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FLY.Thick.BlowingScan.UI.Server", "Project.FLY.Thick.BlowingScan\FLY.Thick.BlowingScan.UI.Server\FLY.Thick.BlowingScan.UI.Server.csproj", "{D42B0F14-C68A-415D-922B-B3BEACC75405}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SQLiteHelper", "thick_public\Project.SQLiteHelper\SQLiteHelper\SQLiteHelper.csproj", "{4CBABFAA-1C62-4510-AC63-A51EE5FD50FF}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Integrated", "Integrated", "{B3B684FF-D5C5-441F-B69C-E75841AE17F6}"
......@@ -96,7 +88,8 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FLY.HeatingHelper", "Project.FLY.ThickHeatAnalyst.Fix\FLY.HeatingHelper\FLY.HeatingHelper.csproj", "{973F0EED-3181-4FB9-ABD6-196A9E816B77}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FLY.HeatingHelper.UI", "Project.FLY.ThickHeatAnalyst.Fix\FLY.HeatingHelper.UI\FLY.HeatingHelper.UI.csproj", "{276EE86A-0961-4C69-A38A-696F4D76E931}"
EndProjectGlobal
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Mixed Platforms = Debug|Mixed Platforms
......@@ -440,38 +433,6 @@ EndProjectGlobal
{7D455950-7D7D-4C79-8E9C-4CF53F09559A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{7D455950-7D7D-4C79-8E9C-4CF53F09559A}.Release|x86.ActiveCfg = Release|Any CPU
{7D455950-7D7D-4C79-8E9C-4CF53F09559A}.Release|x86.Build.0 = Release|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Debug|x86.ActiveCfg = Debug|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Debug|x86.Build.0 = Debug|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Release|Any CPU.Build.0 = Release|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Release|x86.ActiveCfg = Release|Any CPU
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE}.Release|x86.Build.0 = Release|Any CPU
{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0}.Debug|Any CPU.ActiveCfg = Debug|x86
{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0}.Debug|Mixed Platforms.Build.0 = Debug|x86
{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0}.Debug|x86.ActiveCfg = Debug|x86
{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0}.Debug|x86.Build.0 = Debug|x86
{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0}.Release|Any CPU.ActiveCfg = Release|x86
{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0}.Release|Mixed Platforms.ActiveCfg = Release|x86
{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0}.Release|Mixed Platforms.Build.0 = Release|x86
{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0}.Release|x86.ActiveCfg = Release|x86
{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0}.Release|x86.Build.0 = Release|x86
{D42B0F14-C68A-415D-922B-B3BEACC75405}.Debug|Any CPU.ActiveCfg = Debug|x86
{D42B0F14-C68A-415D-922B-B3BEACC75405}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{D42B0F14-C68A-415D-922B-B3BEACC75405}.Debug|Mixed Platforms.Build.0 = Debug|x86
{D42B0F14-C68A-415D-922B-B3BEACC75405}.Debug|x86.ActiveCfg = Debug|x86
{D42B0F14-C68A-415D-922B-B3BEACC75405}.Debug|x86.Build.0 = Debug|x86
{D42B0F14-C68A-415D-922B-B3BEACC75405}.Release|Any CPU.ActiveCfg = Release|x86
{D42B0F14-C68A-415D-922B-B3BEACC75405}.Release|Mixed Platforms.ActiveCfg = Release|x86
{D42B0F14-C68A-415D-922B-B3BEACC75405}.Release|Mixed Platforms.Build.0 = Release|x86
{D42B0F14-C68A-415D-922B-B3BEACC75405}.Release|x86.ActiveCfg = Release|x86
{D42B0F14-C68A-415D-922B-B3BEACC75405}.Release|x86.Build.0 = Release|x86
{4CBABFAA-1C62-4510-AC63-A51EE5FD50FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4CBABFAA-1C62-4510-AC63-A51EE5FD50FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4CBABFAA-1C62-4510-AC63-A51EE5FD50FF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
......@@ -508,6 +469,18 @@ EndProjectGlobal
{9C4DA30F-91FF-42B9-A622-6748B753F07E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{9C4DA30F-91FF-42B9-A622-6748B753F07E}.Release|x86.ActiveCfg = Release|Any CPU
{9C4DA30F-91FF-42B9-A622-6748B753F07E}.Release|x86.Build.0 = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|x86.ActiveCfg = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|x86.Build.0 = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|Any CPU.Build.0 = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|x86.ActiveCfg = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|x86.Build.0 = Release|Any CPU
{973F0EED-3181-4FB9-ABD6-196A9E816B77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{973F0EED-3181-4FB9-ABD6-196A9E816B77}.Debug|Any CPU.Build.0 = Debug|Any CPU
{973F0EED-3181-4FB9-ABD6-196A9E816B77}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
......@@ -531,18 +504,6 @@ EndProjectGlobal
{276EE86A-0961-4C69-A38A-696F4D76E931}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{276EE86A-0961-4C69-A38A-696F4D76E931}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{276EE86A-0961-4C69-A38A-696F4D76E931}.Release|x86.ActiveCfg = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|x86.ActiveCfg = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Debug|x86.Build.0 = Debug|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|Any CPU.Build.0 = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|x86.ActiveCfg = Release|Any CPU
{CC941BE1-1A92-4830-B8DD-E743939BA8BA}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
......@@ -576,9 +537,6 @@ EndProjectGlobal
{9C46D98F-6500-490B-9E56-C89DFFFA05F8} = {2488C4FB-3677-405B-BE1B-C9F532708DE3}
{DD8A6858-1261-49F7-86BE-5AC5C3A0EC34} = {2488C4FB-3677-405B-BE1B-C9F532708DE3}
{7D455950-7D7D-4C79-8E9C-4CF53F09559A} = {2488C4FB-3677-405B-BE1B-C9F532708DE3}
{966D9971-7AA4-4B1B-ABB6-E09C3F04F6EE} = {58EB0B95-13F3-4D21-B6CD-B680E8D3D8AD}
{608CADD8-B4A0-46C9-A60E-A07FFFA9AAF0} = {58EB0B95-13F3-4D21-B6CD-B680E8D3D8AD}
{D42B0F14-C68A-415D-922B-B3BEACC75405} = {58EB0B95-13F3-4D21-B6CD-B680E8D3D8AD}
{4CBABFAA-1C62-4510-AC63-A51EE5FD50FF} = {2488C4FB-3677-405B-BE1B-C9F532708DE3}
{83971044-3F20-4912-9528-52CBEBBA0999} = {B3B684FF-D5C5-441F-B69C-E75841AE17F6}
{9C4DA30F-91FF-42B9-A622-6748B753F07E} = {B3B684FF-D5C5-441F-B69C-E75841AE17F6}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment