Commit 7b123141 authored by 潘栩锋's avatar 潘栩锋 :bicyclist:

下吹 项目 做好了收卷, 温控,吸料界面

<Application x:Class="FLY.DownBlowing.UI.Client.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ut="clr-namespace:FLY.DownBlowing.UI.Client.UnitTests">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/UcTcStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.Thick.Base.UI;component/Themes/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<ut:DownBlowingSystemServiceUt x:Key="downBlowingSystemUt" />
</ResourceDictionary>
</Application.Resources>
</Application>
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows.Data;
namespace FLY.DownBlowing.UI.Client.Converter
{
public class IsGTMultiValueConverter : IMultiValueConverter
{
/// <summary>
/// values[0] 大于 values[1] 返回true
/// values[0] 小于等于 values[1] 返回false
/// 类型不对,返回 false
/// </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, CultureInfo culture)
{
if (values.Count() != 3)
return false;
double[] v = new double[3];
for (int i = 0; i < 3; i++)
{
if (!double.TryParse(values[i].ToString(), out v[i]))
return false;
}
if (v[0] > v[1] - v[2])
return true;
return false;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Data;
namespace FLY.DownBlowing.UI.Client.Converter
{
public class RatioConverter : IMultiValueConverter
{
#region IMultiValueConverter 成员
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
try
{
if (values.Length == 3)//必须要检查,不然 界面生成器 会错误,提示转换异常
{
double ratio;
double value = System.Convert.ToDouble(values[0]);
double max = System.Convert.ToDouble(values[1]);
double ActualWidth = System.Convert.ToDouble(values[2]);
if (max <= 0)
ratio = 0;
else
ratio = (double)value / max;
if (ratio < 0)
ratio = 0;
else if (ratio > 1)
ratio = 1;
return ActualWidth * ratio;
}
}
catch {
}
return null;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
#endregion
}
}
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!--颜色 标题-->
<SolidColorBrush x:Key="Color_title" Color="#A0FFFFFF"/>
<!--颜色 单位-->
<SolidColorBrush x:Key="Color_unit" Color="#80FFFFFF"/>
<!--颜色 文字-->
<SolidColorBrush x:Key="Color_text" Color="#FFFFFFFF"/>
<!--颜色 标题.输入框 -->
<SolidColorBrush x:Key="Color_title_activity" Color="#FF008BE5"/>
<!--颜色 文字.输入框 -->
<SolidColorBrush x:Key="Color_text_activity" Color="#FFa8ddff"/>
<!--颜色 文字.输入框.背景 -->
<SolidColorBrush x:Key="Color_text_activity_background" Color="#50587c"/>
<!--颜色 标题.输入框.警告 -->
<SolidColorBrush x:Key="Color_title_activity_warning" Color="#f92649"/>
<!--颜色 文字.输入框.警告 -->
<SolidColorBrush x:Key="Color_text_activity_warning" Color="#f07085"/>
<!--颜色 文字.输入框.背景.警告 -->
<SolidColorBrush x:Key="Color_text_activity_background_warning" Color="#50587c"/>
<!--加减按钮颜色-->
<SolidColorBrush x:Key="Color_theme_minus" Color="#FFEE5610"/>
<SolidColorBrush x:Key="Color_theme_plus" Color="#FF008BE5"/>
<!--颜色 徽章,用于标题 -->
<SolidColorBrush x:Key="Color_badgeBg" Color="#FF636363"/>
<SolidColorBrush x:Key="Color_badgeText" Color="White"/>
<!--颜色 On Off,用于ToggleButton-->
<SolidColorBrush x:Key="Color_on" Color="#10a8a9"/>
<SolidColorBrush x:Key="Color_off" Color="#e44c65"/>
<SolidColorBrush x:Key="Color_static" Color="#FF636363"/>
<!--颜色 警告-->
<SolidColorBrush x:Key="Color_warning" Color="#e44c65"/>
<!--颜色 表格边框-->
<SolidColorBrush x:Key="Color_table_border" Color="#FFFFFFFF"/>
<SolidColorBrush x:Key="Color_table_alter_row" Color="#80587c"/>
<!--颜色 存放很多块 的容器背景色-->
<SolidColorBrush x:Key="Color_bottom" Color="#1c233d"/>
<!--颜色 块的底色-->
<SolidColorBrush x:Key="Color_background" Color="#FF384064"/>
<!--颜色 比块的底色白一点,用于弱强调 -->
<SolidColorBrush x:Key="Color_background2" Color="#50587c"/>
<!--颜色 灯的颜色 -->
<SolidColorBrush x:Key="Color_bright" Color="Yellow"/>
<SolidColorBrush x:Key="Color_extinguish" Color="#FF636363"/>
</ResourceDictionary>
\ No newline at end of file
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!--颜色 标题-->
<SolidColorBrush x:Key="Color_title" Color="#FF464646"/>
<!--颜色 单位-->
<SolidColorBrush x:Key="Color_unit" Color="#FF464646"/>
<!--颜色 文字-->
<SolidColorBrush x:Key="Color_text" Color="#FF0b0b0b"/>
<!--颜色 标题.输入框 -->
<SolidColorBrush x:Key="Color_title_activity" Color="#FF008BE5"/>
<!--颜色 文字.输入框 -->
<SolidColorBrush x:Key="Color_text_activity" Color="#FF005083"/>
<!--颜色 文字.输入框.背景 -->
<SolidColorBrush x:Key="Color_text_activity_background" Color="#8880C3EE"/>
<!--颜色 标题.输入框.警告 -->
<SolidColorBrush x:Key="Color_title_activity_warning" Color="#f92649"/>
<!--颜色 文字.输入框.警告 -->
<SolidColorBrush x:Key="Color_text_activity_warning" Color="DarkRed"/>
<!--颜色 文字.输入框.背景.警告 -->
<SolidColorBrush x:Key="Color_text_activity_background_warning" Color="#88f07085"/>
<!--加减按钮颜色-->
<SolidColorBrush x:Key="Color_theme_minus" Color="#FFEE5610"/>
<SolidColorBrush x:Key="Color_theme_plus" Color="#FF008BE5"/>
<!--颜色 徽章,用于标题 -->
<SolidColorBrush x:Key="Color_badgeBg" Color="#FF636363"/>
<SolidColorBrush x:Key="Color_badgeText" Color="White"/>
<!--颜色 On Off,用于ToggleButton-->
<SolidColorBrush x:Key="Color_on" Color="Green"/>
<SolidColorBrush x:Key="Color_off" Color="DarkRed"/>
<SolidColorBrush x:Key="Color_static" Color="#FF464646"/>
<!--<SolidColorBrush x:Key="Color_on" Color="#FF008BE5"/>
<SolidColorBrush x:Key="Color_off" Color="#FF3B3B3B"/>
<SolidColorBrush x:Key="Color_static" Color="#FF888888"/>-->
<!--颜色 警告-->
<SolidColorBrush x:Key="Color_warning" Color="DarkRed"/>
<!--颜色 表格边框-->
<SolidColorBrush x:Key="Color_table_border" Color="#FF0b0b0b"/>
<SolidColorBrush x:Key="Color_table_alter_row" Color="LightGray"/>
<!--颜色 存放很多块 的容器背景色-->
<SolidColorBrush x:Key="Color_bottom" Color="LightGray"/>
<!--颜色 块的底色-->
<SolidColorBrush x:Key="Color_background" Color="White"/>
<!--颜色 比块的底色白一点,用于弱强调 -->
<SolidColorBrush x:Key="Color_background2" Color="WhiteSmoke"/>
<!--颜色 灯的颜色 -->
<SolidColorBrush x:Key="Color_bright" Color="#FF008BE5"/>
<SolidColorBrush x:Key="Color_extinguish" Color="#FF888888"/>
</ResourceDictionary>
\ No newline at end of file
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Color.Light.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--颜色 一般标题颜色-->
<SolidColorBrush x:Key="Color_title" Color="#A0FFFFFF"/>
<!--颜色 一般单位颜色-->
<SolidColorBrush x:Key="Color_unit" Color="#80FFFFFF"/>
<!--颜色 一般文字颜色-->
<SolidColorBrush x:Key="Color_text" Color="#FFFFFFFF"/>
<!--颜色 块的底色-->
<SolidColorBrush x:Key="Color_background" Color="#FF384064"/>
<!--颜色 比块的底色白一点,用于弱强调 -->
<SolidColorBrush x:Key="Color_background2" Color="#50587c"/>
<!--颜色 存放很多块 的容器背景色-->
<SolidColorBrush x:Key="Color_bottom" Color="#1c233d"/>
<!--颜色 On Off,用于ToggleButton-->
<SolidColorBrush x:Key="Color_on" Color="#10a8a9"/>
<SolidColorBrush x:Key="Color_off" Color="#e44c65"/>
<!--颜色 徽章,用于标题 -->
<SolidColorBrush x:Key="Color_badgeBg" Color="#FF636363"/>
<SolidColorBrush x:Key="Color_badgeText" Color="White"/>
<!--颜色 输入框 -->
<SolidColorBrush x:Key="Color_title_activity" Color="#FF008BE5"/>
<SolidColorBrush x:Key="Color_text_activity" Color="#FFa8ddff"/>
<!--颜色 输入框, 警告 -->
<SolidColorBrush x:Key="Color_titleActivityWarning" Color="#f92649"/>
<SolidColorBrush x:Key="Color_textActivityWarning" Color="#f07085"/>
<!--Blue-->
<!--<SolidColorBrush x:Key="Brushes.ChartArea0" Color="#CC119EDA" />
<SolidColorBrush x:Key="Brushes.ChartArea1" Color="#CC086F9E"/>
<SolidColorBrush x:Key="Brushes.ChartArea2" Color="#CCEB2F2F" />
<SolidColorBrush x:Key="Brushes.ChartArea3" Color="#CCA59F93" />
<SolidColorBrush x:Key="Brushes.ChartArea4" Color="#22000000" />
<SolidColorBrush x:Key="Brushes.ChartAxisLabel0" Color="#FF119EDA" />
<SolidColorBrush x:Key="Brushes.ChartAxisLabel1" Color="#FF086F9E"/>
<SolidColorBrush x:Key="Brushes.ChartAxisLabel2" Color="#FFEB2F2F" />
<SolidColorBrush x:Key="Brushes.ChartAxisLabel3" Color="#FFA59F93" />-->
<!--Green-->
<!--MahApps.Brushes.Accent-->
......@@ -71,5 +28,5 @@
<SolidColorBrush x:Key="Brushes.ChartSeparator" Color="LightGray" />
<SolidColorBrush x:Key="Brushes.ChartAxisLabel" Color="Black" />
</ResourceDictionary>
\ No newline at end of file
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib" >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<sys:Double x:Key="FontSize_title">18</sys:Double>
<sys:Double x:Key="FontSize_unit">18</sys:Double>
<sys:Double x:Key="FontSize_text">48</sys:Double>
<Style x:Key="TextBlockStyle_title" TargetType="TextBlock">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontSize" Value="{StaticResource FontSize_title}"/>
<Setter Property="Foreground" Value="{StaticResource Color_title}"/>
</Style>
<Style x:Key="RunStyle_unit" TargetType="Run">
<Setter Property="FontSize" Value="{StaticResource FontSize_unit}"/>
<Setter Property="Foreground" Value="{StaticResource Color_unit}"/>
</Style>
<Style x:Key="RunStyle_text" TargetType="Run">
<Setter Property="FontSize" Value="{StaticResource FontSize_text}"/>
<Setter Property="Foreground" Value="{StaticResource Color_text}"/>
</Style>
<Style x:Key="TextBlockStyle_title_activity" TargetType="TextBlock">
<Setter Property="FontSize" Value="{StaticResource FontSize_title}"/>
<Setter Property="Foreground" Value="{StaticResource Color_title_activity}"/>
</Style>
<Style x:Key="RunStyle_text_activity" TargetType="Run">
<Setter Property="FontSize" Value="{StaticResource FontSize_text}"/>
<Setter Property="Foreground" Value="{StaticResource Color_text_activity}"/>
</Style>
<Style TargetType="Border" x:Key="BorderStyle_block">
<Setter Property="CornerRadius" Value="5"/>
<Setter Property="Background" Value="{StaticResource Color_background}"/>
</Style>
</ResourceDictionary>
\ No newline at end of file
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Colors.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--toggleSwitchButton 默认样式-->
<Style TargetType="flyctrl:NoToggleButton" x:Key="NoToggleButtonStyle">
<Setter Property="Margin" Value="5"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Width" Value="110"/>
<Setter Property="OffBrush" Value="{StaticResource Color_theme_static}" />
<Setter Property="OnBrush" Value="{StaticResource Color_theme_activity}" />
<Setter Property="OffLabel" Value="{Binding Content,RelativeSource={RelativeSource Mode=Self}}" />
<Setter Property="OnLabel" Value="{Binding Content,RelativeSource={RelativeSource Mode=Self}}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="flyctrl:NoToggleButton">
<Border x:Name="canvas" Height="55" Width="{TemplateBinding Width}" Background="{TemplateBinding OffBrush}">
<Grid>
<Rectangle x:Name="Path_block" Height="45" Width="24" Margin="5" Fill="White" HorizontalAlignment="Left"/>
<StackPanel x:Name="SP_Text" Orientation="Horizontal" Margin="20,15" HorizontalAlignment="Right">
<TextBlock x:Name="TB_OnOff" Text="{TemplateBinding Property=OffLabel}" Foreground="White" FontSize="24" FontFamily="Microsoft Sans Serif"/>
</StackPanel>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Path_block" Property="HorizontalAlignment" Value="Right"/>
<Setter TargetName="SP_Text" Property="HorizontalAlignment" Value="Left"/>
<Setter TargetName="TB_OnOff" Property="Text" Value="{Binding OnLabel,RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
<Setter TargetName="canvas" Property="Background" Value="{Binding OnBrush,RelativeSource={RelativeSource Mode=TemplatedParent}}" />
</Trigger>
<Trigger Property="IsPressed" Value="true">
<!--块移到中间-->
<Setter TargetName="Path_block" Property="HorizontalAlignment" Value="Center"/>
<Setter TargetName="TB_OnOff" Property="Opacity" Value="0.5"/>
<Setter Property="Opacity" Value="1"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0.7"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="flyctrl:NoToggleButton" BasedOn="{StaticResource NoToggleButtonStyle}"/>
</ResourceDictionary>
\ No newline at end of file
......@@ -5,48 +5,17 @@
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Converter/Dictionary_MyConv.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/DarkSkin.xaml"/>
<!--<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/DarkSkin.xaml"/>-->
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/Color.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/NoToggleButtonStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/ToggleButtonOnOffStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--<SolidColorBrush x:Key="Color_title" Color="#FF464646"/>
<SolidColorBrush x:Key="Color_unit" Color="#FF464646"/>
<SolidColorBrush x:Key="Color_text" Color="#FF0b0b0b"/>
<SolidColorBrush x:Key="Color_title_activity" Color="#FF008BE5"/>
<SolidColorBrush x:Key="Color_text_activity" Color="#FF005083"/>-->
<!--字体大小-->
<sys:Double x:Key="FontSize_title">18</sys:Double>
<sys:Double x:Key="FontSize_unit">12</sys:Double>
<sys:Double x:Key="FontSize_unit">16</sys:Double>
<sys:Double x:Key="FontSize_context_min">32</sys:Double>
<sys:Double x:Key="FontSize_context_max">48</sys:Double>
<SolidColorBrush x:Key="Color_button1_b" Color="#FF008BE5"/>
<SolidColorBrush x:Key="Color_button2_b" Color="#FF919191"/>
<SolidColorBrush x:Key="Color_button_f" Color="#FFf1f1f1"/>
<!--<sys:Double x:Key="FontSize_title">18</sys:Double>
<sys:Double x:Key="FontSize_unit">18</sys:Double>-->
<sys:Double x:Key="FontSize_text">48</sys:Double>
<Style x:Key="TextBlockStyle_title" TargetType="TextBlock">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontSize" Value="{StaticResource FontSize_title}"/>
<Setter Property="Foreground" Value="{StaticResource Color_title}"/>
</Style>
<Style x:Key="RunStyle_unit" TargetType="Run">
<Setter Property="FontSize" Value="{StaticResource FontSize_unit}"/>
<Setter Property="Foreground" Value="{StaticResource Color_unit}"/>
</Style>
<Style x:Key="RunStyle_text" TargetType="Run">
<Setter Property="FontSize" Value="{StaticResource FontSize_text}"/>
<Setter Property="Foreground" Value="{StaticResource Color_text}"/>
</Style>
<Style x:Key="TextBlockStyle_title_activity" TargetType="TextBlock">
<Setter Property="FontSize" Value="{StaticResource FontSize_title}"/>
<Setter Property="Foreground" Value="{StaticResource Color_title_activity}"/>
</Style>
<Style x:Key="RunStyle_text_activity" TargetType="Run">
<Setter Property="FontSize" Value="{StaticResource FontSize_text}"/>
<Setter Property="Foreground" Value="{StaticResource Color_text_activity}"/>
</Style>
</ResourceDictionary>
\ No newline at end of file
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib" >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<sys:Double x:Key="FontSize_title">18</sys:Double>
<sys:Double x:Key="FontSize_unit">18</sys:Double>
<sys:Double x:Key="FontSize_text">48</sys:Double>
<Style x:Key="TextBlockStyle_title" TargetType="TextBlock">
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontSize" Value="{StaticResource FontSize_title}"/>
<Setter Property="Foreground" Value="{DynamicResource Color_title}"/>
</Style>
<Style x:Key="RunStyle_unit" TargetType="Run">
<Setter Property="FontSize" Value="{StaticResource FontSize_unit}"/>
<Setter Property="Foreground" Value="{DynamicResource Color_unit}"/>
</Style>
<Style x:Key="RunStyle_text" TargetType="Run">
<Setter Property="FontSize" Value="{StaticResource FontSize_text}"/>
<Setter Property="Foreground" Value="{DynamicResource Color_text}"/>
</Style>
<Style x:Key="TextBlockStyle_title_activity" TargetType="TextBlock">
<Setter Property="FontSize" Value="{StaticResource FontSize_title}"/>
<Setter Property="Foreground" Value="{DynamicResource Color_title_activity}"/>
</Style>
<Style x:Key="RunStyle_text_activity" TargetType="Run">
<Setter Property="FontSize" Value="{StaticResource FontSize_text}"/>
<Setter Property="Foreground" Value="{DynamicResource Color_text_activity}"/>
</Style>
<Style TargetType="Border" x:Key="BorderStyle_block">
<Setter Property="CornerRadius" Value="5"/>
<Setter Property="Background" Value="{StaticResource Color_background}"/>
</Style>
</ResourceDictionary>
\ No newline at end of file
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Colors.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style TargetType="{x:Type flyctrl:ToggleButtonOnOff}" x:Key="ToggleButtonOnOffStyle">
<Setter Property="Margin" Value="5"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Width" Value="110"/>
<Setter Property="OffBrush" Value="{StaticResource Color_theme_static}" />
<Setter Property="OnBrush" Value="{StaticResource Color_theme_activity}" />
<Setter Property="OffLabel" Value="{Binding Content,RelativeSource={RelativeSource Mode=Self}}" />
<Setter Property="OnLabel" Value="{Binding Content,RelativeSource={RelativeSource Mode=Self}}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="flyctrl:ToggleButtonOnOff">
<Border x:Name="canvas" Height="55" Width="{TemplateBinding Width}" Background="{TemplateBinding OffBrush}">
<Grid>
<Rectangle x:Name="Path_block" Height="45" Width="24" Margin="5" Fill="White" HorizontalAlignment="Left"/>
<StackPanel x:Name="SP_Text" Orientation="Horizontal" Margin="20,15" HorizontalAlignment="Right">
<TextBlock x:Name="TB_OnOff" Text="{TemplateBinding Property=OffLabel}" Foreground="White" FontSize="24" FontFamily="Microsoft Sans Serif"/>
</StackPanel>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="Path_block" Property="HorizontalAlignment" Value="Right"/>
<Setter TargetName="SP_Text" Property="HorizontalAlignment" Value="Left"/>
<Setter TargetName="TB_OnOff" Property="Text" Value="{Binding OnLabel,RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
<Setter TargetName="canvas" Property="Background" Value="{Binding OnBrush,RelativeSource={RelativeSource Mode=TemplatedParent}}" />
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="Path_block" Property="HorizontalAlignment" Value="Center"/>
<Setter TargetName="TB_OnOff" Property="Opacity" Value="0.5"/>
<Setter Property="Opacity" Value="1"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0.7"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type flyctrl:ToggleButtonOnOff}" BasedOn="{StaticResource ToggleButtonOnOffStyle}"/>
</ResourceDictionary>
\ No newline at end of file
<UserControl x:Class="FLY.DownBlowing.UI.Client.UiModule.DynAreaWinder"
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
xmlns:conv="clr-namespace:FLY.DownBlowing.UI.Client.Converter"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
mc:Ignorable="d"
d:DesignWidth="250">
<UserControl.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:,,,/FLY.DownBlowing.UI.Client;component/Themes/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<sys:Double x:Key="FontSize_title">18</sys:Double>
<sys:Double x:Key="FontSize_unit">12</sys:Double>
<!--<Style TargetType="{x:Type Path}" x:Key="PathStyle_icon">
<Setter Property="Fill" Value="White"/>
<Setter Property="Stretch" Value="Uniform"/>
<Setter Property="Width" Value="30"/>
<Setter Property="Height" Value="30"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
</Style>-->
<local:DynAreaViewModelParams x:Key="unitests_props" IsError="False" Error="吸料 PLC 连接断开,请检测网络连接状态,打电话联系"/>
<conv:IsGTMultiValueConverter x:Key="isgtconv"/>
<conv:RatioConverter x:Key="ratioconv" />
</ResourceDictionary>
</UserControl.Resources>
<Button Style="{StaticResource Styles.Button.Empty}" Click="Button_Click">
<Grid Height="120" >
<Grid x:Name="grid_winder" d:DataContext="{Binding Source={StaticResource downBlowingSystemUt},Path=WinderData}"/>
<Grid x:Name="grid_error" d:DataContext="{StaticResource unitests_props}"/>
<Border Style="{StaticResource Styles.Module.Border}"
DataContext="{Binding DataContext,ElementName=grid_winder}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="速度" Margin="4" FontSize="{StaticResource FontSize_title}"/>
<Viewbox Grid.Column="1" Grid.Row="1" MaxHeight="80" HorizontalAlignment="Left">
<StackPanel Orientation="Horizontal">
<TextBlock Margin="4" >
<Run Text="{Binding T1Velocity,StringFormat={}{0:F1}}" FontSize="60" />
</TextBlock>
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}" Text="m/min" FontSize="20" />
</StackPanel>
</Viewbox>
</Grid>
<Grid Grid.Row="1" Margin="2" Name="grid1" Background="{StaticResource Brushes.Static}">
<Rectangle HorizontalAlignment="Left" Fill="{StaticResource Brushes.Activity}">
<Rectangle.Width>
<MultiBinding Converter="{StaticResource ratioconv}" Mode="OneWay">
<Binding Path="OwMeasureLen" />
<Binding Path="OwMeasureLenSet" />
<Binding Path="ActualWidth" ElementName="grid1"/>
</MultiBinding>
</Rectangle.Width>
</Rectangle>
<StackPanel Orientation="Horizontal" >
<TextBlock Text="外收卷" FontSize="12" FontWeight="Bold" FontFamily="YouYuan" Foreground="LightGray" Margin="2" />
<Viewbox Margin="5,0" MaxWidth="80" MaxHeight="26">
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding OwMeasureLen, StringFormat={}{0:F0}}" FontSize="24" FontFamily="Microsoft Sans Serif" TextAlignment="Center" HorizontalAlignment="Center" Foreground="White" />
<TextBlock Style="{StaticResource Styles.Module.Text.ItemValue.Unit}" Text="m" FontSize="12" Foreground="LightGray"/>
</StackPanel>
</Viewbox>
</StackPanel>
</Grid>
</Grid>
</Border>
<Border Style="{StaticResource Styles.Module.Border}" Background="{StaticResource Brushes.Validation}"
DataContext="{Binding DataContext,ElementName=grid_error}"
Visibility="{Binding IsError,Converter={StaticResource visbilityconv}}">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Path Margin="5" Fill="White" Stretch="Uniform" Width="60" Height="60" SnapsToDevicePixels="True" Data="{StaticResource Geometry_alert-circle-outline}" >
<Path.Style>
<Style TargetType="Path">
<Style.Triggers>
<DataTrigger Binding="{Binding IsError}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever" >
<DoubleAnimation BeginTime="0:0:0" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="00:00:01" />
<DoubleAnimation BeginTime="0:0:1" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="00:00:01" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
<TextBlock Grid.Column="1" Margin="5" VerticalAlignment="Center" TextWrapping="Wrap" FontSize="22" Foreground="White" Text="{Binding Error}"/>
</Grid>
</Border>
</Grid>
</Button>
</UserControl>
using FLY.DownBlowing.Common;
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using FLY.OBJComponents.IService;
using FLY.Thick.Base.UI;
using FObjBase;
using GalaSoft.MvvmLight.Command;
using MultiLayout;
using MultiLayout.UiModule;
using System;
using System.ComponentModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
using Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// Page_DynArea.xaml 的交互逻辑
/// </summary>
public partial class DynAreaWinder : UserControl
{
#region 延时推送 MARKNO
const int MARKNO_UPDATEERROR = 1;
#endregion
IUnityContainer container;
IDownBlowingSystemService downBlowingSystem;
WarningReasonWindow warningReasonWindow;
IWarningService warningService;
DispatcherTimer timer_error;
DynAreaViewModelParams props = new DynAreaViewModelParams();
SetPLCUpdatePlan setPlan_winder;
public DynAreaWinder()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IUnityContainer container,
[Dependency("downBlowingWarningReasonWindow")] WarningReasonWindow warningReasonWindow,
[Dependency("downBlowingWarningService")]IWarningService warningService,
IDownBlowingSystemService downBlowingSystemService)
{
this.container = container;
this.downBlowingSystem = downBlowingSystemService;
//创建窗口观察 报警原因列表
this.warningReasonWindow = warningReasonWindow;
this.warningService = warningService;
//报警原因轮流显示
timer_error = new DispatcherTimer();
timer_error.Interval = TimeSpan.FromSeconds(3);
timer_error.Tick += (s, e) =>
{
reason_list_index--;
if (reason_list_index < 0)
reason_list_index = warningReasonWindow.Record.Count();
updateError();
};
warningReasonWindow.Record.CollectionChanged += Record_CollectionChanged;
grid_winder.DataContext = this.downBlowingSystem.WinderData;
grid_error.DataContext = props;
//注册属性更新计划
setPlan_winder = new SetPLCUpdatePlan(
this.downBlowingSystem.PLCos,
this.downBlowingSystem.WinderData,
new string[]
{
nameof(WinderData.T1Velocity),
nameof(WinderData.OwMeasureLen),
nameof(WinderData.OwMeasureLenSet),
nameof(WinderData.OwMeasurePreWarning),
});
downBlowingSystem.PropertyChanged += (s, e) =>
{
if (downBlowingSystem is FObjServiceClient) {
if (e.PropertyName == nameof(FObjServiceClient.IsConnected)) {
}
}
};
updateError();
}
private void Record_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
FObjBase.PollModule.Current.Poll_JustOnce(
new FObjBase.PollModule.PollHandler(delegate ()
{
reason_list_index = warningReasonWindow.Record.Count() - 1;
updateError();
}), this, MARKNO_UPDATEERROR);
}
void updateError()
{
if (downBlowingSystem is FObjServiceClient)
{
var client = downBlowingSystem as FObjServiceClient;
if (!client.IsConnected)
{
props.Error = "下吹服务器连接断开";
props.IsError = true;
reason_list_index = -1;
timer_error.Stop();
return;
}
}
if (warningReasonWindow.Record.Count == 0)
{
props.IsError = false;
props.Error = "";
reason_list_index = -1;
timer_error.Stop();
return;
}
if (reason_list_index >= warningReasonWindow.Record.Count)
reason_list_index = warningReasonWindow.Record.Count - 1;
else if (reason_list_index < 0)
reason_list_index = 0;
props.Error = warningReasonWindow.Record[reason_list_index].Description;
props.IsError = true;
timer_error.Start();
}
private int reason_list_index = -1;
private void Button_Click(object sender, RoutedEventArgs e)
{
PgErrorTable2 p = new PgErrorTable2();
p.Init(container, warningService, warningReasonWindow);
FlyLayoutManager.NavigationService.Navigate(p);
}
}
public class DynAreaViewModelParams : INotifyPropertyChanged
{
/// <summary>
/// 有异常
/// </summary>
public bool IsError { get; set; }
/// <summary>
/// 异常消息
/// </summary>
public string Error { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
public class UiModule2_DynAreaWinder : IUiModule2
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title => "下吹.状态";
public ComponentType Type => ComponentType.DynArea;
public bool IsUnique => true;
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id, IUnityContainer container)
{
DynAreaWinder graph = new DynAreaWinder();
container.BuildUp(graph);
return graph;
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail()
{
return new System.Windows.Controls.Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
}
}
}
<UserControl x:Class="FLY.DownBlowing.UI.Client.UiModule.FeederPanel"
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
mc:Ignorable="d" Width="1600" Height="954">
<Grid d:DataContext="{StaticResource downBlowingSystemUt}">
<ItemsControl ItemsSource="{Binding FeederDatas}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:UcFeeder DataContext="{Binding .}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</UserControl>
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using MultiLayout.UiModule;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// FeederPanel.xaml 的交互逻辑
/// </summary>
public partial class FeederPanel : UserControl
{
IDownBlowingSystemService downBlowingSystemService;
IUnityContainer container;
List<SetPLCUpdatePlan> setPlan_feederDatas = new List<SetPLCUpdatePlan>();
public FeederPanel()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IUnityContainer container,
IDownBlowingSystemService downBlowingSystemService)
{
this.downBlowingSystemService = downBlowingSystemService;
this.DataContext = this.downBlowingSystemService;
for (int i = 0; i < this.downBlowingSystemService.FeederDatas.Count(); i++)
{
SetPLCUpdatePlan plan = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.FeederDatas[i],
UcFeeder.update_propertynames);
setPlan_feederDatas.Add(plan);
}
this.downBlowingSystemService.PropertyChanged += DownBlowingSystemService_PropertyChanged;
}
private void DownBlowingSystemService_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(downBlowingSystemService.FeederDatas))
{
ResetItemsEvent();
}
}
private void ResetItemsEvent()
{
//把多出来的删除
int remove_cnt = setPlan_feederDatas.Count() - this.downBlowingSystemService.FeederDatas.Count();
if (remove_cnt > 0)
{
for (int i = 0; i < remove_cnt; i++)
{
SetPLCUpdatePlan plan = setPlan_feederDatas[setPlan_feederDatas.Count() - 1 - i];
plan.Dispose();
}
setPlan_feederDatas.RemoveRange(setPlan_feederDatas.Count() - remove_cnt, remove_cnt);
}
else
{
int start_idx = setPlan_feederDatas.Count();
int add_cnt = -remove_cnt;
for (int i = 0; i < add_cnt; i++)
{
SetPLCUpdatePlan plan = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.FeederDatas[start_idx + i],
UcFeeder.update_propertynames);
setPlan_feederDatas.Add(plan);
}
}
}
}
public class UiModule2_FeederPanel : IUiModule2
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title => "下吹.吸料";
public ComponentType Type => ComponentType.Graph;
public bool IsUnique => true;
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id, IUnityContainer container)
{
FeederPanel2 graph = new FeederPanel2();
container.BuildUp(graph);
return graph;
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail()
{
return new System.Windows.Controls.Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
}
}
}
<UserControl x:Class="FLY.DownBlowing.UI.Client.UiModule.FeederPanel2"
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
mc:Ignorable="d" d:DesignWidth="1600" d:DesignHeight="954">
<Grid d:DataContext="{StaticResource downBlowingSystemUt}">
<ItemsControl x:Name="ic" ItemsSource="{Binding FeederDatas}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="{Binding ElementName=ic,Path=Items.Count}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:UcFeeder2 DataContext="{Binding .}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</UserControl>
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using MultiLayout.UiModule;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// FeederPanel.xaml 的交互逻辑
/// </summary>
public partial class FeederPanel2 : UserControl
{
IDownBlowingSystemService downBlowingSystemService;
IUnityContainer container;
List<SetPLCUpdatePlan> setPlan_feederDatas = new List<SetPLCUpdatePlan>();
public FeederPanel2()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IUnityContainer container,
IDownBlowingSystemService downBlowingSystemService)
{
this.downBlowingSystemService = downBlowingSystemService;
this.DataContext = this.downBlowingSystemService;
for (int i = 0; i < this.downBlowingSystemService.FeederDatas.Count(); i++)
{
SetPLCUpdatePlan plan = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.FeederDatas[i],
UcFeeder.update_propertynames);
setPlan_feederDatas.Add(plan);
}
this.downBlowingSystemService.PropertyChanged += DownBlowingSystemService_PropertyChanged;
}
private void DownBlowingSystemService_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(downBlowingSystemService.FeederDatas))
{
ResetItemsEvent();
}
}
private void ResetItemsEvent()
{
//把多出来的删除
int remove_cnt = setPlan_feederDatas.Count() - this.downBlowingSystemService.FeederDatas.Count();
if (remove_cnt > 0)
{
for (int i = 0; i < remove_cnt; i++)
{
SetPLCUpdatePlan plan = setPlan_feederDatas[setPlan_feederDatas.Count() - 1 - i];
plan.Dispose();
}
setPlan_feederDatas.RemoveRange(setPlan_feederDatas.Count() - remove_cnt, remove_cnt);
}
else
{
int start_idx = setPlan_feederDatas.Count();
int add_cnt = -remove_cnt;
for (int i = 0; i < add_cnt; i++)
{
SetPLCUpdatePlan plan = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.FeederDatas[start_idx + i],
UcFeeder.update_propertynames);
setPlan_feederDatas.Add(plan);
}
}
}
}
public class UiModule2_FeederPanel2 : IUiModule2
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title => "下吹.吸料2";
public ComponentType Type => ComponentType.Graph;
public bool IsUnique => true;
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id, IUnityContainer container)
{
FeederPanel graph = new FeederPanel();
container.BuildUp(graph);
return graph;
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail()
{
return new System.Windows.Controls.Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
}
}
}
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
\ No newline at end of file
<UserControl x:Class="FLY.DownBlowing.UI.Client.UiModule.UcFeeder"
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:ut="clr-namespace:FLY.DownBlowing.UI.Client.UnitTests"
mc:Ignorable="d" >
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="FeederPanelStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid d:DataContext="{Binding Source={StaticResource downBlowingSystemUt},Path=FeederDatas[0]}">
<Border Style="{StaticResource Styles.Module.Border}" Background="{StaticResource Color_background}">
<Viewbox Margin="{StaticResource ControlMargin}" Stretch="Uniform" StretchDirection="DownOnly" HorizontalAlignment="Left" VerticalAlignment="Top">
<Grid >
<StackPanel>
<Border Width="100" Background="{StaticResource Color_badgeBg}" Margin="3" HorizontalAlignment="Left">
<TextBlock Text="{Binding Number}" Width="100" Height="100" FontSize="100" FontWeight="Bold" FontFamily="Arial Black" Foreground="{StaticResource Color_badgeText}" VerticalAlignment="Top" HorizontalAlignment="Left"/>
</Border>
<ItemsControl ItemsSource="{Binding Feeders}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="{StaticResource ControlMargin}">
<Grid>
<flyctrl:ToggleButtonOnOff Style="{StaticResource ToggleButtonOnOffStyle}" Width="140"
Margin="{StaticResource ControlMargin}"
OnLabel="吸料开" OnBrush="{StaticResource Color_on}"
OffLabel="吸料关" OffBrush="{StaticResource Color_off}"
IsChecked="{Binding IsFeederOn}"/>
<TextBlock HorizontalAlignment="Right" VerticalAlignment="Top" Padding="6,2" Margin="0,-5,-5,0"
Background="{StaticResource Color_badgeBg}" Foreground="{StaticResource Color_badgeText}"
FontSize="30"
Text="{Binding Number}" />
</Grid>
<Grid Width="20"/>
<Button Style="{StaticResource MahApps.Styles.Button.Square.Accent}"
Padding="20,5" Margin="{StaticResource ControlMargin}"
FontSize="{StaticResource FontSize_title}"
Content="复位"
Visibility="{Binding IsFeederResetValid,Converter={StaticResource visbilityconv}}">
<i:Interaction.Behaviors>
<flyctrl:Set1Behavior Binding="{Binding FeederReset}"/>
</i:Interaction.Behaviors>
</Button>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
</Viewbox>
</Border>
</Grid>
</UserControl>
using FLY.DownBlowing.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// UcFeeder.xaml 的交互逻辑
/// </summary>
public partial class UcFeeder : UserControl
{
public static string[] update_propertynames;
static UcFeeder() {
string[] propertynames = new string[] {
nameof(FeederData.IsFeederOn1),
nameof(FeederData.IsFeederResetValid1),
nameof(FeederData.FeederReset1)
};
List<string> update_propertynames = new List<string>();
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < propertynames.Count(); j++)
{
update_propertynames.Add(propertynames[j].Replace("1", (i + 1).ToString()));
}
}
UcFeeder.update_propertynames = update_propertynames.ToArray();
}
public UcFeeder()
{
InitializeComponent();
}
}
}
<UserControl x:Class="FLY.DownBlowing.UI.Client.UiModule.UcFeeder2"
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:ut="clr-namespace:FLY.DownBlowing.UI.Client.UnitTests"
mc:Ignorable="d" >
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="FeederPanelStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid d:DataContext="{Binding Source={StaticResource downBlowingSystemUt},Path=FeederDatas[0]}">
<Border Style="{StaticResource Styles.Module.Border}" Background="{StaticResource Color_background}">
<Viewbox Margin="{StaticResource ControlMargin}" Stretch="Uniform" StretchDirection="DownOnly" HorizontalAlignment="Left" VerticalAlignment="Top">
<Grid >
<StackPanel>
<Border Width="100" Background="{StaticResource Color_badgeBg}" Margin="3" HorizontalAlignment="Left">
<TextBlock Text="{Binding Number}" Width="100" Height="100" FontSize="100" FontWeight="Bold" FontFamily="Arial Black" Foreground="{StaticResource Color_badgeText}" VerticalAlignment="Top" HorizontalAlignment="Left"/>
</Border>
<ItemsControl ItemsSource="{Binding Feeders}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Margin="{StaticResource ControlMargin}">
<Grid HorizontalAlignment="Left">
<flyctrl:ToggleButtonOnOff Style="{StaticResource ToggleButtonOnOffStyle}" Width="140"
Margin="{StaticResource ControlMargin}"
OnLabel="吸料开" OnBrush="{StaticResource Color_on}"
OffLabel="吸料关" OffBrush="{StaticResource Color_off}"
IsChecked="{Binding IsFeederOn}"/>
<TextBlock HorizontalAlignment="Right" VerticalAlignment="Top" Padding="6,2" Margin="0,-5,-5,0"
Background="{StaticResource Color_badgeBg}" Foreground="{StaticResource Color_badgeText}"
FontSize="30"
Text="{Binding Number}" />
</Grid>
<Grid Width="20"/>
<Button Style="{StaticResource MahApps.Styles.Button.Square.Accent}"
Padding="20,5" Margin="{StaticResource ControlMargin}"
FontSize="{StaticResource FontSize_title}"
Content="复位"
Visibility="{Binding IsFeederResetValid,Converter={StaticResource visbilityconv}}">
<i:Interaction.Behaviors>
<flyctrl:Set1Behavior Binding="{Binding FeederReset}"/>
</i:Interaction.Behaviors>
</Button>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
</Viewbox>
</Border>
</Grid>
</UserControl>
using FLY.DownBlowing.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// UcFeeder.xaml 的交互逻辑
/// </summary>
public partial class UcFeeder2 : UserControl
{
public UcFeeder2()
{
InitializeComponent();
}
}
}
......@@ -14,11 +14,11 @@
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Button Style="{StaticResource ButtonStyle_icon}" Foreground="White"
<Button Style="{StaticResource Styles.Button.Icon}" Foreground="White"
Click="btnMenuClick">
<StackPanel >
<iconPacks:PackIconMaterial Kind="Fan" />
<TextBlock Text="IBC" Foreground="White"/>
<iconPacks:PackIconMaterial Kind="TriangleOutline" />
<TextBlock Text="下吹" Foreground="White"/>
</StackPanel>
</Button>
</Grid>
......
......@@ -47,7 +47,7 @@ namespace FLY.DownBlowing.UI.Client.UiModule
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title=>"IBC.菜单";
public string Title=>"下吹.菜单";
public ComponentType Type => ComponentType.Menu;
public bool IsUnique => true;
/// <summary>
......
......@@ -5,15 +5,17 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
xmlns:ut="clr-namespace:FLY.DownBlowing.UI.Client.UnitTests"
mc:Ignorable="d" >
mc:Ignorable="d" d:DesignWidth="1060" d:DesignHeight="634" Unloaded="UserControl_Unloaded" >
<!--1920*1080 下图表区 1600 * 954
1280*1024 下图表区 960 * 890
1388*768 下图表区 1060 * 634-->
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/TempAreaPanelStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/UcTcStyle.xaml"/>
<ResourceDictionary Source="TempAreaPanelStyle.xaml"/>
<ResourceDictionary Source="UcTcStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<ut:DownBlowingSystemServiceUt x:Key="viewModel"/>
<Style x:Key="UcTcStyle1" TargetType="{x:Type UserControl}">
<!--<Style x:Key="UcTcStyle1" TargetType="{x:Type UserControl}">
<Setter Property="Width" Value="155"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="Template">
......@@ -76,59 +78,67 @@
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Style>-->
</ResourceDictionary>
</UserControl.Resources>
<Viewbox Stretch="Uniform" VerticalAlignment="Top" HorizontalAlignment="Left">
<Grid d:DataContext="{StaticResource viewModel}">
<Grid.RowDefinitions>
<RowDefinition Height="5*"/>
<RowDefinition Height="871*"/>
</Grid.RowDefinitions>
<StackPanel Grid.RowSpan="2">
<ItemsControl ItemsSource="{Binding TAreas}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Style="{StaticResource ButtonStyle_empty}" Tag="{Binding .}" Click="btnTAreaClick">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Style="{StaticResource BorderStyle_block}" CornerRadius="5,0,0,5" Margin="5" Width="100">
<TextBlock Text="{Binding Number}" FontSize="50" Foreground="{StaticResource Color_title}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<UserControl Style="{StaticResource UcTcStyle1}" Grid.Column="1" DataContext="{Binding Temperatures[0]}" />
<UserControl Style="{StaticResource UcTcStyle1}" Grid.Column="2" DataContext="{Binding Temperatures[1]}" />
<UserControl Style="{StaticResource UcTcStyle1}" Grid.Column="3" DataContext="{Binding Temperatures[2]}" />
<UserControl Style="{StaticResource UcTcStyle1}" Grid.Column="4" DataContext="{Binding Temperatures[3]}" />
<UserControl Style="{StaticResource UcTcStyle1}" Grid.Column="5" DataContext="{Binding Temperatures[4]}" />
<UserControl Style="{StaticResource UcTcStyle1}" Grid.Column="6" DataContext="{Binding Temperatures[5]}" />
<!--<local:UcTc Grid.Column="1" DataContext="{Binding Temperatures[0]}" />
<local:UcTc Grid.Column="2" DataContext="{Binding Temperatures[1]}" />
<local:UcTc Grid.Column="3" DataContext="{Binding Temperatures[2]}" />
<local:UcTc Grid.Column="4" DataContext="{Binding Temperatures[3]}" />
<local:UcTc Grid.Column="5" DataContext="{Binding Temperatures[4]}" />
<local:UcTc Grid.Column="6" DataContext="{Binding Temperatures[5]}" />-->
</Grid>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
</Viewbox>
<Grid d:DataContext="{StaticResource downBlowingSystemUt}">
<ItemsControl ItemsSource="{Binding TAreas}" x:Name="itemControl">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="1"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Style="{StaticResource Styles.Button.Empty}" Tag="{Binding .}" Click="btnTAreaClick">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Style="{StaticResource Styles.Module.Border}" Background="{StaticResource Color_background}" CornerRadius="5,0,0,5" Width="100">
<TextBlock Text="{Binding Number}" FontSize="50" Foreground="{StaticResource Color_title}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<UniformGrid Columns="7" Grid.Column="1">
<UniformGrid.Resources>
<Style TargetType="local:UcTc">
<!--<Setter Property="Width" Value="{x:Null}"/>-->
<Setter Property="Margin" Value="{StaticResource ControlMargin}"/>
<Setter Property="Number" Value="{Binding Number}"/>
<Setter Property="PV" Value="{Binding TempPV}"/>
<Setter Property="SV" Value="{Binding TempSV}"/>
<Setter Property="IsRun" Value="{Binding IsHeatingSet}" />
<Setter Property="IsOT1" Value="{Binding IsHeating}" />
<Setter Property="IsAT" Value="{Binding IsSelfAdjusting}"/>
<Setter Property="IsOT2" Value="{Binding IsCooling}"/>
</Style>
</UniformGrid.Resources>
<Viewbox Stretch="Uniform" StretchDirection="DownOnly">
<local:UcTc DataContext="{Binding Temperatures[0]}" />
</Viewbox>
<Viewbox Stretch="Uniform" StretchDirection="DownOnly">
<local:UcTc DataContext="{Binding Temperatures[1]}" />
</Viewbox>
<Viewbox Stretch="Uniform" StretchDirection="DownOnly">
<local:UcTc DataContext="{Binding Temperatures[2]}" />
</Viewbox>
<Viewbox Stretch="Uniform" StretchDirection="DownOnly">
<local:UcTc DataContext="{Binding Temperatures[3]}" />
</Viewbox>
<Viewbox Stretch="Uniform" StretchDirection="DownOnly">
<local:UcTc DataContext="{Binding Temperatures[4]}" />
</Viewbox>
<Viewbox Stretch="Uniform" StretchDirection="DownOnly">
<local:UcTc DataContext="{Binding Temperatures[5]}" />
</Viewbox>
<Viewbox Stretch="Uniform" StretchDirection="DownOnly">
<local:UcTm Margin="{StaticResource ControlMargin}" Number="熔温" PV="{Binding MeltingTemp}" />
</Viewbox>
</UniformGrid>
</Grid>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</UserControl>
......@@ -53,6 +53,7 @@ namespace FLY.DownBlowing.UI.Client.UiModule
IDownBlowingSystemService downBlowingSystemService)
{
this.downBlowingSystemService = downBlowingSystemService;
this.container = container;
this.DataContext = this.downBlowingSystemService;
for (int i = 0; i < this.downBlowingSystemService.TAreas.Count(); i++)
......@@ -110,6 +111,25 @@ namespace FLY.DownBlowing.UI.Client.UiModule
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
w.ShowDialog();
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
}
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
for (int i = 0; i < setPlan_items.Count(); i++)
{
setPlan_items[i].Dispose();
}
setPlan_items.Clear();
}
private void UserControl_Initialized(object sender, System.EventArgs e)
{
}
}
public class UiModule2_TempAreaPanel : IUiModule2
......@@ -118,7 +138,7 @@ namespace FLY.DownBlowing.UI.Client.UiModule
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title => "IBC.温区主界面";
public string Title => "下吹.温控";
public ComponentType Type => ComponentType.Graph;
public bool IsUnique => true;
......
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib" >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/Styles.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/Color.Dark.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
\ No newline at end of file
......@@ -4,19 +4,19 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
xmlns:p="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
x:Class="FLY.DownBlowing.UI.Client.UiModule.UcTc"
mc:Ignorable="d" Width="155"
mc:Ignorable="d p" MinWidth="150" MinHeight="116"
x:Name="uc">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!--加载 ResourceDictionary 会很慢,在TempAreaPanel中不能直接调用 UcTc,然后需要等3-4s才能启动 -->
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/UcTcStyle.xaml"/>
<p:ResourceDictionary Source="UcTcStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--资料内的数据不调用,是不会创建的,所以不用担心浪费内存-->
<local:UcTcVmUt x:Key="viewModel" PV="100" SV="99" IsRun="True" IsOT1="True" Number="1"/>
<local:UcTcVmUt x:Key="viewModel" PV="100" SV="99" IsRun="True" IsOT1="True" Number="M2"/>
</ResourceDictionary>
</UserControl.Resources>
<Grid d:DataContext="{StaticResource viewModel}" DataContext="{Binding ElementName=uc}">
......@@ -49,19 +49,12 @@
Text="{Binding SV,StringFormat={}{0:0.#}}" />
</Grid>
<Rectangle Height="2" Fill="{StaticResource PrintBrush}"/>
<Grid Margin="2,2,2,5">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<UniformGrid Margin="2,2,2,5" Columns="4">
<ToggleButton IsChecked="{Binding IsRun}" Content="Run" IsEnabled="False" Style="{StaticResource LedStyle}"/>
<ToggleButton Grid.Column="1" IsChecked="{Binding IsOT1}" Content="OT1" IsEnabled="False" Style="{StaticResource LedStyle}"/>
<ToggleButton Grid.Column="2" IsChecked="{Binding IsAT}" Content="AT" IsEnabled="False" Style="{StaticResource LedStyle}"/>
<ToggleButton Grid.Column="3" IsChecked="{Binding IsOT2}" Content="OT2" IsEnabled="False" Style="{StaticResource LedStyle}"/>
</Grid>
<ToggleButton IsChecked="{Binding IsOT1}" Content="OT1" IsEnabled="False" Style="{StaticResource LedStyle}"/>
<ToggleButton IsChecked="{Binding IsAT}" Content="AT" IsEnabled="False" Style="{StaticResource LedStyle}"/>
<ToggleButton IsChecked="{Binding IsOT2}" Content="OT2" IsEnabled="False" Style="{StaticResource LedStyle}"/>
</UniformGrid>
</StackPanel>
<TextBlock Background="{StaticResource BrandBrush}" Grid.Row="1" Height="8" Text="8888888" FontWeight="Bold" Padding="1" FontSize="5" Foreground="{StaticResource PrintBrush}"/>
......
......@@ -5,6 +5,7 @@ namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// UcTc.xaml 的交互逻辑
/// 温度控制器
/// </summary>
public partial class UcTc : UserControl
{
......
......@@ -8,12 +8,12 @@
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
mc:Ignorable="d" Width="150"
mc:Ignorable="d" Width="240"
x:Name="uc">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/UcTcStyle.xaml"/>
<ResourceDictionary Source="UcTcStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<local:UcTcAllVmUt x:Key="viewModel" Number="M" SV="99.1" IsAllRun="True"/>
</ResourceDictionary>
......@@ -27,7 +27,7 @@
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<StackPanel>
<StackPanel >
<TextBlock HorizontalAlignment="Right" VerticalAlignment="Top"
Background="{StaticResource Color_badgeBg}" Foreground="{StaticResource Color_badgeText}"
Padding="6,2"
......@@ -36,14 +36,18 @@
<Run Text="{Binding Number}"/><Run Text="层"/>
</TextBlock>
<StackPanel>
<TextBlock Margin="3,0" Style="{StaticResource TextBlockStyle_title_activity}"
<TextBlock Style="{StaticResource Styles.Text.FieldHeader.Editable}" Margin="3,0"
Foreground="{StaticResource Color_title_activity}"
FontSize="{StaticResource FontSize_title}"
Text="全部温度设定" />
<TextBox
Style="{StaticResource SegInputStyle}" Foreground="{StaticResource Color_text_activity}"
<TextBox Style="{StaticResource SegInputStyle}"
Foreground="{StaticResource Color_text_activity}"
Background="{StaticResource Color_background2}"
Text="{Binding SV,StringFormat={}{0:0.#}}" />
</StackPanel>
<Viewbox>
<flyctrl:ToggleButtonOnOff HorizontalAlignment="Left" Margin="{StaticResource ControlMargin}" Width="170"
<Viewbox Width="150">
<flyctrl:ToggleButtonOnOff Style="{StaticResource ToggleButtonOnOffStyle}"
HorizontalAlignment="Left" Margin="{StaticResource ControlMargin}" Width="170"
OnLabel="全部运行" OnBrush="{StaticResource Color_on}"
OffLabel="全部停止" OffBrush="{StaticResource Color_off}"
IsChecked="{Binding IsAllRun}"/>
......
......@@ -8,17 +8,17 @@
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
mc:Ignorable="d" Width="150"
mc:Ignorable="d" Width="140"
x:Name="uc">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/UcTcStyle.xaml"/>
<ResourceDictionary Source="UcTcStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--资料内的数据不调用,是不会创建的,所以不用担心浪费内存-->
<local:UcTcVmUt x:Key="viewModel" PV="100" SV="99" IsRun="True" IsOT1="True" Number="1"/>
<local:UcTcVmUt x:Key="viewModel" PV="888.8" SV="99" IsRun="True" IsOT1="True" Number="1"/>
</ResourceDictionary>
</UserControl.Resources>
<Grid d:DataContext="{StaticResource viewModel}" DataContext="{Binding ElementName=uc}">
......@@ -36,7 +36,9 @@
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="PV" Foreground="{StaticResource Color_text}" Margin="2"/>
<TextBlock Text="PV" Style="{StaticResource Styles.Text.FieldHeader}" Margin="2"
Foreground="{StaticResource Color_title}"
FontSize="{StaticResource FontSize_title}"/>
<TextBlock Grid.Column="1"
Style="{StaticResource SegTextStyle}" Foreground="{StaticResource Color_text}" Background="{StaticResource Color_background2}"
Text="{Binding PV,StringFormat={}{0:0.#}}" />
......@@ -46,9 +48,13 @@
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="SV" Margin="2" Style="{StaticResource TextBlockStyle_title_activity}"/>
<TextBlock Text="SV" Margin="2" Style="{StaticResource Styles.Text.FieldHeader.Editable}"
Foreground="{StaticResource Color_title_activity}"
FontSize="{StaticResource FontSize_title}"/>
<TextBox Grid.Column="1"
Style="{StaticResource SegInputStyle}" Foreground="{StaticResource Color_text_activity}"
Style="{StaticResource SegInputStyle}"
Foreground="{StaticResource Color_text_activity}"
Background="{StaticResource Color_background2}"
Text="{Binding SV,StringFormat={}{0:0.#}}" />
</Grid>
<Grid Margin="2,2,2,5">
......@@ -63,7 +69,7 @@
<ToggleButton Grid.Column="2" IsChecked="{Binding IsAT}" Content="AT" Style="{StaticResource LedStyle}" Foreground="{StaticResource Color_text}"/>
<ToggleButton Grid.Column="3" IsChecked="{Binding IsOT2}" Content="OT2" Style="{StaticResource LedStyle}" Foreground="{StaticResource Color_text}"/>
</Grid>
<flyctrl:ToggleButtonOnOff HorizontalAlignment="Left" Margin="{StaticResource ControlMargin}"
<flyctrl:ToggleButtonOnOff Style="{StaticResource ToggleButtonOnOffStyle}" HorizontalAlignment="Center" Margin="{StaticResource ControlMargin}"
OnLabel="运行" OnBrush="{StaticResource Color_on}"
OffLabel="停止" OffBrush="{StaticResource Color_off}"
IsChecked="{Binding IsRun}"/>
......
......@@ -2,7 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/TempAreaPanelStyle.xaml"/>
<ResourceDictionary Source="TempAreaPanelStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<SolidColorBrush x:Key="SegGreenBrush" Color="#78b649"/>
......@@ -23,7 +23,7 @@
<Style TargetType="{x:Type TextBlock}" x:Key="SegTextStyle">
<Setter Property="FontFamily" Value="NI7SEG"/>
<Setter Property="FontSize" Value="30"/>
<Setter Property="FontSize" Value="20"/>
<Setter Property="Background" Value="{StaticResource SegBgBrush}"/>
<Setter Property="Foreground" Value="{StaticResource SegGreenBrush}"/>
......
<UserControl
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
x:Class="FLY.DownBlowing.UI.Client.UiModule.UcTm"
mc:Ignorable="d" MinWidth="150" MinHeight="116"
x:Name="uc">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!--加载 ResourceDictionary 会很慢,在TempAreaPanel中不能直接调用 UcTc,然后需要等3-4s才能启动 -->
<ResourceDictionary Source="UcTcStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--资料内的数据不调用,是不会创建的,所以不用担心浪费内存-->
<local:UcTmVmUt x:Key="viewModel" PV="100.1" Number="熔温"/>
</ResourceDictionary>
</UserControl.Resources>
<Grid d:DataContext="{StaticResource viewModel}" DataContext="{Binding ElementName=uc}">
<Border Background="{StaticResource DashBoardBrush}" BorderBrush="{StaticResource DashBoardBorderBrush}" BorderThickness="3" CornerRadius="3">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<StackPanel>
<Grid Height="30"/>
<Grid Margin="2" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="PV" Foreground="{StaticResource PrintBrush}" Margin="2"/>
<TextBlock Grid.Column="1" Style="{StaticResource SegTextStyle}"
Text="{Binding PV,StringFormat={}{0:0.#}}" />
</Grid>
</StackPanel>
<TextBlock Background="{StaticResource BrandBrush}" Grid.Row="1" Height="8" Text="8888888" FontWeight="Bold" Padding="1" FontSize="5" Foreground="{StaticResource PrintBrush}"/>
</Grid>
</Border>
<TextBlock HorizontalAlignment="Right" VerticalAlignment="Top"
Background="{StaticResource Color_badgeBg}" Foreground="{StaticResource Color_badgeText}"
Padding="6,2"
FontSize="30"
Text="{Binding Number}" Margin="0,-5,-5,0"/>
</Grid>
</UserControl>
using System.Windows;
using System.Windows.Controls;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// UcTm.xaml 的交互逻辑
/// 温度测量器
/// </summary>
public partial class UcTm : UserControl
{
public UcTm()
{
InitializeComponent();
}
public string Number
{
get { return (string)GetValue(NumberProperty); }
set { SetValue(NumberProperty, value); }
}
public static readonly DependencyProperty NumberProperty =
DependencyProperty.Register(nameof(Number), typeof(string), typeof(UcTm));
public double PV
{
get { return (double)GetValue(PVProperty); }
set { SetValue(PVProperty, value); }
}
public static readonly DependencyProperty PVProperty =
DependencyProperty.Register(nameof(PV), typeof(double), typeof(UcTm));
}
public class UcTmVmUt
{
public string Number { get; set; }
public double PV { get; set; }
}
}
......@@ -14,7 +14,7 @@
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/TempAreaPanelStyle.xaml"/>
<ResourceDictionary Source="TempAreaPanelStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style TargetType="local:UcTcSet">
<Setter Property="Margin" Value="5"/>
......@@ -33,28 +33,28 @@
</ResourceDictionary>
</Window.Resources>
<Grid Background="{StaticResource Color_bottom}"
<Grid Background="{StaticResource Color_bottom}">
<Grid Margin="10"
d:DataContext="{Binding Source={StaticResource viewModel},Path=TAreas[1]}">
<StackPanel Orientation="Horizontal" Margin="10">
<StackPanel>
<local:UcTcSet DataContext="{Binding Temperatures[0]}"/>
<local:UcTcSet DataContext="{Binding Temperatures[1]}"/>
</StackPanel>
<StackPanel>
<local:UcTcSet DataContext="{Binding Temperatures[2]}"/>
<local:UcTcSet DataContext="{Binding Temperatures[3]}"/>
</StackPanel>
<StackPanel>
<local:UcTcAll Number="{Binding Number}" SV="{Binding AllTempSet,Mode=TwoWay}" IsAllRun="{Binding IsAllTempSame,Mode=TwoWay}"/>
<local:UcTcSet DataContext="{Binding Temperatures[4]}" />
</StackPanel>
<StackPanel>
<Grid Height="40"/>
<local:UcTcSet DataContext="{Binding Temperatures[5]}" />
</StackPanel>
</StackPanel>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<local:UcTcSet Grid.Row="0" Grid.Column="0" DataContext="{Binding Temperatures[0]}"/>
<local:UcTcSet Grid.Row="1" Grid.Column="0" DataContext="{Binding Temperatures[1]}"/>
<local:UcTcSet Grid.Row="0" Grid.Column="1" DataContext="{Binding Temperatures[2]}"/>
<local:UcTcSet Grid.Row="1" Grid.Column="1" DataContext="{Binding Temperatures[3]}"/>
<local:UcTcSet Grid.Row="1" Grid.Column="2" DataContext="{Binding Temperatures[4]}"/>
<local:UcTcSet Grid.Row="1" Grid.Column="3" DataContext="{Binding Temperatures[5]}"/>
<local:UcTcAll Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" HorizontalAlignment="Left"
Number="{Binding Number}" SV="{Binding AllTempSet,Mode=TwoWay}" IsAllRun="{Binding IsAllTempSame,Mode=TwoWay}"/>
</Grid>
</Grid>
</flyctrllib:WindowBigClose>
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using System.Windows;
using Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// Window_Frequency.xaml 的交互逻辑
/// </summary>
public partial class WdManual : FLY.ControlLibrary.WindowBigClose
{
IDownBlowingSystemService downBlowingSystem;
SetPLCUpdatePlan setPlan_winder;
public WdManual()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IDownBlowingSystemService downBlowingSystem)
{
this.downBlowingSystem = downBlowingSystem;
this.DataContext = downBlowingSystem;
//IsTongAuto
//注册属性更新计划
setPlan_winder = new SetPLCUpdatePlan(
this.downBlowingSystem.PLCos,
this.downBlowingSystem.WinderData,
new string[] {
nameof(this.downBlowingSystem.WinderData.IsOwTongAuto),
nameof(this.downBlowingSystem.WinderData.OwCalenderRollerAct),
nameof(this.downBlowingSystem.WinderData.OwTurnoverInching),
nameof(this.downBlowingSystem.WinderData.OwCuttingFilm),
nameof(this.downBlowingSystem.WinderData.OwTurnoverOrg),
nameof(this.downBlowingSystem.WinderData.OwPressureArmOffset),
nameof(this.downBlowingSystem.WinderData.OwPushRod),
nameof(this.downBlowingSystem.WinderData.OwTongLoosen),
nameof(this.downBlowingSystem.WinderData.OwTongUp),
nameof(this.downBlowingSystem.WinderData.OwTongDown),
nameof(this.downBlowingSystem.WinderData.OwTongIn),
nameof(this.downBlowingSystem.WinderData.OwTongOut)
});
}
private void WindowBigClose_Unloaded(object sender, RoutedEventArgs e)
{
if (setPlan_winder != null)
{
setPlan_winder.Dispose();
setPlan_winder = null;
}
}
}
}
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<SolidColorBrush x:Key="Color_background" Color="#FFf1f1f1"/>
<!--点击事件 被按下去的感觉-->
<Style TargetType="Button" x:Key="Styles.Button.ResizeIcon">
<Style.Resources>
<Style TargetType="iconPacks:PackIconMaterial">
<Setter Property="Width" Value="auto"/>
<Setter Property="Height" Value="auto"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</Style.Resources>
<Setter Property="Foreground" Value="{StaticResource Brushes.Static}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="Transparent">
<Grid x:Name="grid" Style="{StaticResource Styles.Shadow}">
<ContentPresenter x:Name="path" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
Width="50" Height="{Binding RelativeSource={RelativeSource Mode=Self},Path=Width}"
HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
</Border>
<ControlTemplate.Triggers>
<!--鼠标移动 透明度变为70%-->
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0.7"/>
</Trigger>
<!--点击事件 内容变小 50变为46,阴影效果取消, 效果就是 被按下去的感觉-->
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="path" Property="Width" Value="46"/>
<Setter TargetName="grid" Property="Margin" Value="2"/>
<Setter Property="Foreground" Value="{StaticResource Brushes.Activity}"/>
<Setter TargetName="grid" Property="Effect" Value="{x:Null}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--手动按钮-->
<Style TargetType="{x:Type ToggleButton}" x:Key="ToggleButtonStyle_hand" >
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="Foreground" Value="{StaticResource Brushes.Static}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid x:Name="grid" HorizontalAlignment="Center">
<iconPacks:PackIconMaterial x:Name="path" Kind="HandRight" Width="50" Height="auto"/>
<TextBlock x:Name="blocka" Text="A" Foreground="Red" HorizontalAlignment="Right" VerticalAlignment="Bottom" FontSize="30" Margin="0,0,0,-10" Visibility="Hidden"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0.7"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="path" Property="Width" Value="46"/>
<Setter TargetName="grid" Property="Margin" Value="2"/>
<Setter Property="Foreground" Value="{StaticResource Brushes.Activity}"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="blocka" Property="Visibility" Value="Visible"/>
<Setter Property="Foreground" Value="{StaticResource Brushes.Activity}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--手动按钮的文字-->
<Style TargetType="TextBlock" x:Key="TextBlockStyle_hand" BasedOn="{StaticResource Styles.Text.FieldHeader}">
<Setter Property="Text" Value="抓手手动"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Tag,RelativeSource={RelativeSource Mode=Self}}" Value="True">
<Setter Property="Text" Value="抓手自动"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
\ No newline at end of file
<flyctrllib:WindowBigClose x:Class="FLY.DownBlowing.UI.Client.UiModule.WdSetValue"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:flyctrllib="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
d:DataContext="{d:DesignInstance local:WdSetValueVm}"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
mc:Ignorable="d"
WindowStartupLocation="CenterScreen"
SizeToContent="WidthAndHeight"
>
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid Background="{StaticResource Color_background}">
<StackPanel Margin="5,20" >
<StackPanel Margin="{StaticResource ControlMargin}">
<TextBlock Style="{StaticResource Styles.Text.FieldHeader.Editable}" Text="{Binding Title}" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="44"
Foreground="{StaticResource Color_title_activity}"/>
</StackPanel>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel>
<StackPanel Margin="{StaticResource ControlMargin}" Width="200">
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource Styles.Text.FieldContent.Input}" Text="{Binding Value,StringFormat={}{0:F1}}" MaxWidth="120"
Foreground="{StaticResource Color_text_activity}"
Background="{StaticResource Color_text_activity_background}"
/>
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
Foreground="{StaticResource Color_unit}"
Text="{Binding Unit}" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="{StaticResource ControlMargin}">
<Button Style="{StaticResource Styles.Button.Icon.Large}" Foreground="{StaticResource Color_theme_plus}"
VerticalAlignment="Top"
Command="{Binding PlusCmd}" >
<iconPacks:PackIconMaterial Kind="PlusCircle"/>
</Button>
<Button Style="{StaticResource Styles.Button.Icon.Large}" Foreground="{StaticResource Color_theme_minus}"
VerticalAlignment="Top"
Command="{Binding MinusCmd}" >
<iconPacks:PackIconMaterial Kind="MinusCircle"/>
</Button>
</StackPanel>
</StackPanel>
<Button Grid.Column="1" Style="{StaticResource Styles.Button.Apply}" Click="btnOkClick" VerticalAlignment="Bottom"/>
</Grid>
</StackPanel>
</Grid>
</flyctrllib:WindowBigClose>
using GalaSoft.MvvmLight.Command;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// Window_Frequency.xaml 的交互逻辑
/// </summary>
public partial class WdSetValue : FLY.ControlLibrary.WindowBigClose
{
WdSetValueVm viewModel;
public float Value {
get {
return viewModel.Value;
}
}
public WdSetValue()
{
InitializeComponent();
viewModel = new WdSetValueVm();
}
public void Init(
float value, float max, float min, float step, string title, string unit)
{
viewModel.Init(value, max, min, step, title, unit);
this.DataContext = viewModel;
}
private void btnOkClick(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
this.Close();
}
}
public class WdSetValueVm : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public float Value { get; set; }
public string Title { get; private set; } = "速度设置";
public string Unit { get; private set; } = "m/min";
#region Command
public RelayCommand PlusCmd { get; }
public RelayCommand MinusCmd { get; }
public RelayCommand OkCmd { get; }
#endregion
float max;
float min;
float step;
public WdSetValueVm() {
PlusCmd = new RelayCommand(Plus);
MinusCmd = new RelayCommand(Minus);
}
public void Init(
float value, float max, float min, float step, string title, string unit)
{
Value = value;
Title = title;
Unit = unit;
this.max = max;
this.min = min;
this.step = step;
}
private void Minus()
{
if (Value > min)
Value -= step;
}
private void Plus()
{
if (Value < max)
Value += step;
}
}
}
using FLY.DownBlowing.Common;
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// CenterPanel.xaml 的交互逻辑
/// </summary>
public partial class CenterPanel : UserControl
{
static string[] update_propertynames;
IDownBlowingSystemService downBlowingSystemService;
SetPLCUpdatePlan setPlan_winder;
static CenterPanel()
{
update_propertynames = new string[] {
nameof(WinderData.IsOwGapWindOn),
nameof(WinderData.IsOwGapWindOnSet),
nameof(WinderData.IsOwSurfaceCenterWindOn),
nameof(WinderData.IsOwSurfaceCenterWindOnSet),
nameof(WinderData.IsOwSurfaceWindOn),
nameof(WinderData.IsOwSurfaceWindOnSet),
nameof(WinderData.OwCenterAirPress),
nameof(WinderData.OwCenterAirPressSet),
nameof(WinderData.OwCenterInitDiameter),
nameof(WinderData.OwDiameter),
nameof(WinderData.OwMeasureReset),
nameof(WinderData.OwCenterTension),
nameof(WinderData.OwCenterTensionSet),
nameof(WinderData.OwCenterTaperSet)
};
}
public CenterPanel()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IDownBlowingSystemService downBlowingSystemService)
{
this.downBlowingSystemService = downBlowingSystemService;
this.DataContext = this.downBlowingSystemService;
this.setPlan_winder = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.WinderData,
update_propertynames
);
}
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
if (this.setPlan_winder != null)
{
setPlan_winder.Dispose();
setPlan_winder = null;
}
}
}
}
<UserControl x:Class="FLY.DownBlowing.UI.Client.UiModule.ExAirPanel"
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:ut="clr-namespace:FLY.DownBlowing.UI.Client.UnitTests"
mc:Ignorable="d"
Unloaded="UserControl_Unloaded">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="WinderPanelStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid d:DataContext="{StaticResource downBlowingSystemUt}" >
<Border DataContext="{Binding IbcData}" Style="{StaticResource Styles.Module.Border}"
Background="{StaticResource Color_background}">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Grid.Row="0" Grid.ColumnSpan="2" >
<TextBlock Style="{StaticResource Styles.Text.FieldHeader}"
Margin="3,0"
FontSize="{StaticResource FontSize_title}"
Foreground="{StaticResource Color_title}"
Text="显示" />
<StackPanel Orientation="Horizontal" Margin="3,0">
<TextBlock Style="{StaticResource Styles.Text.FieldContent}"
FontSize="{StaticResource FontSize_context_min}"
Foreground="{StaticResource Color_text}"
Text="{Binding ExAirFreq,StringFormat={}{0:F1}}" />
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
FontSize="{StaticResource FontSize_unit}"
Foreground="{StaticResource Color_unit}"
Text="Hz" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Column="2" Background="{StaticResource Color_badgeBg}">
<StackPanel Orientation="Horizontal" Margin="7,3">
<TextBlock Text="外风" FontSize="30" Foreground="{StaticResource Color_badgeText}"/>
<TextBlock Text="风机" FontSize="20" Foreground="{StaticResource Color_badgeText}"/>
</StackPanel>
</StackPanel>
<TextBlock Grid.Row="1" Grid.Column="0" Margin="3,0"
Style="{StaticResource Styles.Text.FieldHeader.Editable}"
FontSize="{StaticResource FontSize_title}"
Foreground="{StaticResource Color_title_activity}"
Text="设置" />
<Grid Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" >
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource Styles.Text.FieldContent.Input}"
VerticalAlignment="Bottom"
FontSize="{StaticResource FontSize_context_max}"
Foreground="{StaticResource Color_text_activity}"
Background="{StaticResource Color_text_activity_background}"
Text="{Binding ExAirFreqSet,StringFormat={}{0:F1}}" />
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
FontSize="{StaticResource FontSize_unit}"
Foreground="{StaticResource Color_unit}"
Text="Hz" />
</StackPanel>
<Button Style="{StaticResource Styles.Button.Icon.Large}"
HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,-30,-10,0"
Foreground="{StaticResource Color_theme_minus}"
Click="btnExAirMinusClick" >
<Grid Style="{StaticResource Styles.Shadow}">
<Ellipse Fill="White" Stretch="Fill" Margin="1"/>
<iconPacks:PackIconMaterial Kind="MinusCircle" />
</Grid>
</Button>
</Grid>
<Button Style="{StaticResource Styles.Button.Icon.Large}"
Grid.Row="2" Grid.Column="0" VerticalAlignment="Top" Margin="-10,-20,0,0"
Foreground="{StaticResource Color_theme_plus}"
Click="btnExAirPlusClick" >
<Grid Style="{StaticResource Styles.Shadow}">
<Ellipse Fill="White" Stretch="Fill" Margin="1"/>
<iconPacks:PackIconMaterial Kind="PlusCircle"/>
</Grid>
</Button>
<flyctrl:NoToggleButton Style="{StaticResource NoToggleButtonStyle}"
Grid.Row="2" Grid.ColumnSpan="3" HorizontalAlignment="Right" Margin="{StaticResource ControlMargin}"
OnLabel="运行" OnBrush="{StaticResource Color_on}"
OffLabel="停止" OffBrush="{StaticResource Color_off}"
IsChecked="{Binding IsExAirOn}">
<i:Interaction.Behaviors>
<flyctrl:Set1Behavior Binding="{Binding IsExAirOnSet}"/>
</i:Interaction.Behaviors>
</flyctrl:NoToggleButton>
</Grid>
</Border>
</Grid>
</UserControl>
using FLY.DownBlowing.Common;
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// ExAirPanel.xaml 的交互逻辑
/// </summary>
public partial class ExAirPanel : UserControl
{
static string[] update_propertynames;
IDownBlowingSystemService downBlowingSystemService;
SetPLCUpdatePlan setPlan_ibc;
static ExAirPanel()
{
update_propertynames = new string[] {
nameof(IbcData.ExAirFreq),
nameof(IbcData.ExAirFreqSet),
nameof(IbcData.IsExAirOn),
nameof(IbcData.IsExAirOnSet)
};
}
public ExAirPanel()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IDownBlowingSystemService downBlowingSystemService)
{
this.downBlowingSystemService = downBlowingSystemService;
this.DataContext = this.downBlowingSystemService;
this.setPlan_ibc = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.IbcData,
update_propertynames
);
}
private void btnExAirPlusClick(object sender, RoutedEventArgs e)
{
if (this.downBlowingSystemService.IbcData.ExAirFreqSet <= 49)
{
this.downBlowingSystemService.IbcData.ExAirFreqSet += 1;
}
}
private void btnExAirMinusClick(object sender, RoutedEventArgs e)
{
if (this.downBlowingSystemService.IbcData.ExAirFreqSet >= 1)
{
this.downBlowingSystemService.IbcData.ExAirFreqSet -= 1;
}
}
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
if (this.setPlan_ibc != null)
{
setPlan_ibc.Dispose();
setPlan_ibc = null;
}
}
}
}
<UserControl x:Class="FLY.DownBlowing.UI.Client.UiModule.FlowPumpPanel"
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:ut="clr-namespace:FLY.DownBlowing.UI.Client.UnitTests"
mc:Ignorable="d"
Unloaded="UserControl_Unloaded">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="WinderPanelStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid d:DataContext="{StaticResource downBlowingSystemUt}" >
<Border DataContext="{Binding IbcData}" Style="{StaticResource Styles.Module.Border}"
Background="{StaticResource Color_background}">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel >
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource Styles.Text.FieldHeader}"
Margin="3,0"
FontSize="{StaticResource FontSize_title}"
Foreground="{StaticResource Color_title}"
Text="流量泵" />
<StackPanel Orientation="Horizontal" Margin="3,0">
<TextBlock Style="{StaticResource Styles.Text.FieldContent}"
FontSize="{StaticResource FontSize_context_min}"
Foreground="{StaticResource Color_text}"
Text="{Binding FlowPumpValue,StringFormat={}{0:F1}}" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource Styles.Text.FieldHeader.Editable}"
Margin="3,0"
FontSize="{StaticResource FontSize_title}"
Foreground="{StaticResource Color_title}"
Text="流量计" />
<StackPanel Orientation="Horizontal" Margin="3,0">
<TextBlock Style="{StaticResource Styles.Text.FieldContent}"
FontSize="{StaticResource FontSize_context_min}"
Foreground="{StaticResource Color_text}"
Text="{Binding FlowValue,StringFormat={}{0:F2}}" />
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
FontSize="{StaticResource FontSize_unit}"
Foreground="{StaticResource Color_unit}"
Text="L" />
</StackPanel>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Column="1" Background="{StaticResource Color_badgeBg}">
<StackPanel Orientation="Horizontal" Margin="7,3">
<TextBlock Text="流量泵" FontSize="30" Foreground="{StaticResource Color_badgeText}"/>
</StackPanel>
</StackPanel>
</Grid>
<StackPanel Grid.Row="1" >
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource Styles.Text.FieldHeader.Editable}"
Margin="3,0"
FontSize="{StaticResource FontSize_title}"
Foreground="{StaticResource Color_title_activity}"
Text="流量设定" />
<StackPanel Orientation="Horizontal" Margin="3,0">
<TextBox Style="{StaticResource Styles.Text.FieldContent.Input}"
FontSize="{StaticResource FontSize_context_max}"
Foreground="{StaticResource Color_text_activity}"
Background="{StaticResource Color_text_activity_background}"
Text="{Binding FlowValueSet,StringFormat={}{0:F2}}" />
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
FontSize="{StaticResource FontSize_unit}"
Foreground="{StaticResource Color_unit}"
Text="L" />
</StackPanel>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Row="2" >
<flyctrl:ToggleButtonOnOff Style="{StaticResource ToggleButtonOnOffStyle}" HorizontalAlignment="Left" Margin="{StaticResource ControlMargin}"
OnLabel="运行" OnBrush="{StaticResource Color_on}"
OffLabel="关闭" OffBrush="{StaticResource Color_off}"
IsChecked="{Binding IsFlowPumpOn}"/>
</StackPanel>
</Grid>
</Border>
</Grid>
</UserControl>
using FLY.DownBlowing.Common;
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// FlowPumpPanel.xaml 的交互逻辑
/// </summary>
public partial class FlowPumpPanel : UserControl
{
static string[] update_propertynames;
IDownBlowingSystemService downBlowingSystemService;
SetPLCUpdatePlan setPlan;
static FlowPumpPanel()
{
update_propertynames = new string[] {
nameof(IbcData.FlowPumpValue),
nameof(IbcData.FlowValue),
nameof(IbcData.FlowValueSet),
nameof(IbcData.IsFlowPumpOn)
};
}
public FlowPumpPanel()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IDownBlowingSystemService downBlowingSystemService)
{
this.downBlowingSystemService = downBlowingSystemService;
this.DataContext = this.downBlowingSystemService;
this.setPlan = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.IbcData,
update_propertynames
);
}
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
if (this.setPlan != null)
{
setPlan.Dispose();
setPlan = null;
}
}
}
}
<UserControl x:Class="FLY.DownBlowing.UI.Client.UiModule.MeasureLenPanel"
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:ut="clr-namespace:FLY.DownBlowing.UI.Client.UnitTests"
mc:Ignorable="d"
Unloaded="UserControl_Unloaded">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="WinderPanelStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid d:DataContext="{StaticResource downBlowingSystemUt}" >
<Border DataContext="{Binding WinderData}" Style="{StaticResource Styles.Module.Border}"
Background="{StaticResource Color_background}">
<Grid Margin="{StaticResource ControlMargin}">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="1" Background="{StaticResource Color_badgeBg}">
<StackPanel Orientation="Horizontal" Margin="7,3">
<TextBlock Text="外收" FontSize="30" Foreground="{StaticResource Color_badgeText}"/>
<TextBlock Text="计米" FontSize="20" Foreground="{StaticResource Color_badgeText}"/>
</StackPanel>
</StackPanel>
<Button Style="{StaticResource Styles.Button.Empty}" Click="btnMeasureSetClick">
<StackPanel >
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource Styles.Text.FieldHeader.Editable}"
Margin="3,0"
FontSize="{StaticResource FontSize_title}"
Foreground="{StaticResource Color_title_activity}"
Text="设定" />
<StackPanel Orientation="Horizontal" Margin="3,0">
<TextBlock Style="{StaticResource Styles.Text.FieldContent}"
FontSize="{StaticResource FontSize_context_min}"
Foreground="{StaticResource Color_text_activity}"
Background="{StaticResource Color_text_activity_background}"
Text="{Binding OwMeasureLenSet,StringFormat={}{0:0.#}}" />
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
FontSize="{StaticResource FontSize_unit}"
Foreground="{StaticResource Color_unit}"
Text="m" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource Styles.Text.FieldHeader.Editable}"
Margin="3,0"
FontSize="{StaticResource FontSize_title}"
Foreground="{StaticResource Color_title_activity_warning}"
Text="预警" />
<StackPanel Orientation="Horizontal" Margin="3,0">
<TextBlock Style="{StaticResource Styles.Text.FieldContent}"
FontSize="{StaticResource FontSize_context_min}"
Foreground="{StaticResource Color_text_activity_warning}"
Background="{StaticResource Color_text_activity_background_warning}"
Text="{Binding OwMeasurePreWarning,StringFormat={}{0:0.#}}" />
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
FontSize="{StaticResource FontSize_unit}"
Foreground="{StaticResource Color_unit}"
Text="m" />
</StackPanel>
</StackPanel>
</StackPanel>
</Button>
<StackPanel Grid.Row="1" Grid.ColumnSpan="3" Orientation="Horizontal">
<TextBlock Style="{StaticResource Styles.Text.FieldHeader}"
Margin="3,0"
FontSize="{StaticResource FontSize_title}"
Foreground="{StaticResource Color_title}"
Text="当前" />
<StackPanel Orientation="Horizontal" Margin="3,0">
<TextBlock Style="{StaticResource Styles.Text.FieldContent}"
FontSize="{StaticResource FontSize_context_max}"
Foreground="{StaticResource Color_text}"
Text="{Binding OwMeasureLen,StringFormat={}{0:0.#}}" />
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
FontSize="{StaticResource FontSize_unit}"
Foreground="{StaticResource Color_unit}"
Text="m" />
</StackPanel>
</StackPanel>
<Button Style="{StaticResource Styles.Button.Icon.Large}"
Grid.Row="1" Grid.Column="1"
HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,-40,-20,0"
Foreground="{StaticResource Color_off}" >
<i:Interaction.Behaviors>
<flyctrl:ResetBehavior Binding="{Binding OwMeasureReset}"/>
</i:Interaction.Behaviors>
<Grid Style="{StaticResource Styles.Shadow}">
<Rectangle Width="40" Height="40" Fill="White"/>
<iconPacks:PackIconMaterial Kind="CloseBox" />
</Grid>
</Button>
<flyctrl:ToggleButtonOnOff Style="{StaticResource ToggleButtonOnOffStyle}"
Grid.Row="2" Grid.ColumnSpan="3" HorizontalAlignment="Left" Margin="{StaticResource ControlMargin}"
OnLabel="运行" OnBrush="{StaticResource Color_on}"
OffLabel="停止" OffBrush="{StaticResource Color_off}"
IsChecked="{Binding IsOwMeasureOn}"/>
</Grid>
</Border>
</Grid>
</UserControl>
using FLY.DownBlowing.Common;
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// MeasureLenPanel.xaml 的交互逻辑
/// </summary>
public partial class MeasureLenPanel : UserControl
{
static string[] update_propertynames;
IDownBlowingSystemService downBlowingSystemService;
SetPLCUpdatePlan setPlan;
static MeasureLenPanel()
{
update_propertynames = new string[] {
nameof(WinderData.OwMeasureLenSet),
nameof(WinderData.OwMeasurePreWarning),
nameof(WinderData.OwMeasureLen),
nameof(WinderData.OwMeasureReset),
nameof(WinderData.IsOwMeasureOn)
};
}
public MeasureLenPanel()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IDownBlowingSystemService downBlowingSystemService)
{
this.downBlowingSystemService = downBlowingSystemService;
this.DataContext = this.downBlowingSystemService;
this.setPlan = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.WinderData,
update_propertynames
);
}
private void btnMeasureSetClick(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
WdMeasure w = new WdMeasure();
w.Init(
(int)(downBlowingSystemService.WinderData.OwMeasureLenSet),
(int)(downBlowingSystemService.WinderData.OwMeasurePreWarning));
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
if (w.ShowDialog() == true)
{
downBlowingSystemService.WinderData.OwMeasureLenSet = w.viewmodel.MeasureLenSet;
downBlowingSystemService.WinderData.OwMeasurePreWarning = w.viewmodel.MeasurePreWarning;
}
}
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
if (this.setPlan != null)
{
setPlan.Dispose();
setPlan = null;
}
}
}
}
<UserControl x:Class="FLY.DownBlowing.UI.Client.UiModule.OtherPanel"
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
mc:Ignorable="d"
Unloaded="UserControl_Unloaded">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="WinderPanelStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid d:DataContext="{StaticResource downBlowingSystemUt}" >
<Border Style="{StaticResource Styles.Module.Border}"
Background="{StaticResource Color_background}">
<StackPanel Orientation="Horizontal" Margin="{StaticResource ControlMargin}">
<flyctrl:ToggleButtonOnOff Style="{StaticResource ToggleButtonOnOffStyle}" Width="150" HorizontalAlignment="Left" Margin="{StaticResource ControlMargin}"
OnLabel="补气阀开" OnBrush="{StaticResource Color_on}"
OffLabel="补气阀关" OffBrush="{StaticResource Color_off}"
IsChecked="{Binding IsGulpValveOn}"
DataContext="{Binding IbcData}" >
<i:Interaction.Behaviors>
<flyctrl:Set1Behavior Binding="{Binding IsGulpValveOnSet}"/>
</i:Interaction.Behaviors>
</flyctrl:ToggleButtonOnOff>
<flyctrl:ToggleButtonOnOff Style="{StaticResource ToggleButtonOnOffStyle}" Width="180" Margin="{StaticResource ControlMargin}"
OnLabel="吹水风机开" OnBrush="{StaticResource Color_on}"
OffLabel="吹水风机关" OffBrush="{StaticResource Color_off}"
IsChecked="{Binding IsWaterFanOn}"
DataContext="{Binding WinderData}" >
<i:Interaction.Behaviors>
<flyctrl:Set1Behavior Binding="{Binding IsWaterFanOnSet}"/>
</i:Interaction.Behaviors>
</flyctrl:ToggleButtonOnOff>
<flyctrl:NoToggleButton Style="{StaticResource NoToggleButtonStyle}" Width="180" Margin="{StaticResource ControlMargin}"
OnLabel="气垫风机开" OnBrush="{StaticResource Color_on}"
OffLabel="气垫风机关" OffBrush="{StaticResource Color_off}"
IsChecked="{Binding IsCushionFanOn}"
DataContext="{Binding WinderData}" >
<i:Interaction.Behaviors>
<flyctrl:Set1Behavior Binding="{Binding IsCushionFanOnSet}"/>
</i:Interaction.Behaviors>
</flyctrl:NoToggleButton>
</StackPanel>
</Border>
</Grid>
</UserControl>
using FLY.DownBlowing.Common;
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// OtherPanel.xaml 的交互逻辑
/// </summary>
public partial class OtherPanel : UserControl
{
static string[] update_propertynames_winder;
static string[] update_propertynames_ibc;
IDownBlowingSystemService downBlowingSystemService;
SetPLCUpdatePlan setPlan_winder;
SetPLCUpdatePlan setPlan_ibc;
static OtherPanel()
{
update_propertynames_ibc = new string[] {
nameof(IbcData.IsGulpValveOn),
nameof(IbcData.IsGulpValveOnSet)
};
update_propertynames_winder = new string[] {
nameof(WinderData.IsWaterFanOn),
nameof(WinderData.IsWaterFanOnSet),
nameof(WinderData.IsCushionFanOn),
nameof(WinderData.IsCushionFanOnSet)
};
}
public OtherPanel()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IDownBlowingSystemService downBlowingSystemService)
{
this.downBlowingSystemService = downBlowingSystemService;
this.DataContext = this.downBlowingSystemService;
this.setPlan_winder = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.WinderData,
update_propertynames_winder
);
this.setPlan_ibc = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.IbcData,
update_propertynames_ibc
);
}
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
if (this.setPlan_winder != null)
{
setPlan_winder.Dispose();
setPlan_winder = null;
}
if (this.setPlan_ibc != null)
{
setPlan_ibc.Dispose();
setPlan_ibc = null;
}
}
}
}
using FLY.DownBlowing.Common;
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// RotaryPanel.xaml 的交互逻辑
/// </summary>
public partial class RotaryPanel : UserControl
{
static string[] update_propertynames_winder;
IDownBlowingSystemService downBlowingSystemService;
SetPLCUpdatePlan setPlan_winder;
IUnityContainer container;
static RotaryPanel()
{
update_propertynames_winder = new string[] {
nameof(WinderData.RotaryFreqSet),
nameof(WinderData.RotaryCurrent),
nameof(WinderData.RotaryFreq),
nameof(WinderData.IsRotaryFreqSetChanged),
nameof(WinderData.IsRotaryOn),
nameof(WinderData.IsRotaryOnSet),
nameof(WinderData.IsRotaryOrg),
nameof(WinderData.IsRotaryOrgSet),
nameof(WinderData.IsRotaryForw),
nameof(WinderData.IsRotaryBackw),
nameof(WinderData.IsRotaryForwTurn),
nameof(WinderData.IsRotaryOrgSign),
nameof(WinderData.IsRotaryBackwTurn),
nameof(WinderData.IsRotaryForwLimit),
nameof(WinderData.IsRotaryBackwLimit),
};
}
public RotaryPanel()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IUnityContainer container,
IDownBlowingSystemService downBlowingSystemService)
{
this.container = container;
this.downBlowingSystemService = downBlowingSystemService;
this.DataContext = this.downBlowingSystemService;
this.setPlan_winder = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.WinderData,
update_propertynames_winder
);
}
private void button_freq_Click(object sender, RoutedEventArgs e)
{
WdSetValue w = new WdSetValue();
w.Init(
downBlowingSystemService.WinderData.RotaryFreqSet,
50, 0.1f, 0.1f, "旋转频率", "Hz");
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
if (w.ShowDialog() == true)
{
downBlowingSystemService.WinderData.RotaryFreqSet = w.Value;
downBlowingSystemService.WinderData.IsRotaryFreqSetChanged = true;
}
}
private void button_manual_Click(object sender, RoutedEventArgs e)
{
WdManual w = new WdManual();
container.BuildUp(w);
w.Owner = FLY.ControlLibrary.COMMON.GetWindow(this);
w.ShowDialog();
}
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
if (this.setPlan_winder != null)
{
setPlan_winder.Dispose();
setPlan_winder = null;
}
}
}
}
<UserControl x:Class="FLY.DownBlowing.UI.Client.UiModule.T1VelocityPanel"
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:ut="clr-namespace:FLY.DownBlowing.UI.Client.UnitTests"
mc:Ignorable="d"
Unloaded="UserControl_Unloaded">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="WinderPanelStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid d:DataContext="{StaticResource downBlowingSystemUt}" >
<Border DataContext="{Binding WinderData}" Style="{StaticResource Styles.Module.Border}"
Background="{StaticResource Color_background}">
<Grid Margin="{StaticResource ControlMargin}">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel >
<TextBlock Style="{StaticResource Styles.Text.FieldHeader}"
Margin="3,0"
FontSize="{StaticResource FontSize_title}"
Foreground="{StaticResource Color_title}"
Text="显示" />
<StackPanel Orientation="Horizontal" Margin="3,0">
<TextBlock Style="{StaticResource Styles.Text.FieldContent}"
FontSize="{StaticResource FontSize_context_min}"
Foreground="{StaticResource Color_text}"
Text="{Binding T1Velocity,StringFormat={}{0:F1}}" />
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
FontSize="{StaticResource FontSize_unit}"
Foreground="{StaticResource Color_unit}"
Text="m/min" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal" Grid.Column="1" Background="{StaticResource Color_badgeBg}">
<StackPanel Orientation="Horizontal" Margin="7,3">
<TextBlock Text="一牵引" FontSize="30" Foreground="{StaticResource Color_badgeText}"/>
<TextBlock Text="速度" FontSize="20" Foreground="{StaticResource Color_badgeText}"/>
</StackPanel>
</StackPanel>
<StackPanel Grid.Row="1" Grid.ColumnSpan="3" Orientation="Horizontal">
<TextBlock Margin="3,0"
Style="{StaticResource Styles.Text.FieldHeader}"
FontSize="{StaticResource FontSize_title}"
Foreground="{StaticResource Color_title_activity}"
Text="设置" />
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource Styles.Text.FieldContent.Input}"
VerticalAlignment="Bottom"
FontSize="{StaticResource FontSize_context_max}"
Foreground="{StaticResource Color_text_activity}"
Background="{StaticResource Color_text_activity_background}"
Text="{Binding T1VelocitySet,StringFormat={}{0:F1}}" />
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
FontSize="{StaticResource FontSize_unit}"
Foreground="{StaticResource Color_unit}"
Text="m/min" />
</StackPanel>
</Grid>
</StackPanel>
</Grid>
</Border>
</Grid>
</UserControl>
using FLY.DownBlowing.Common;
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using FObjBase.Reflect;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// T1VelocityPanel.xaml 的交互逻辑
/// </summary>
public partial class T1VelocityPanel : UserControl
{
static string[] update_propertynames;
IDownBlowingSystemService downBlowingSystemService;
SetPLCUpdatePlan setPlan;
static T1VelocityPanel()
{
update_propertynames = new string[] {
nameof(WinderData.T1Velocity),
nameof(WinderData.T1VelocitySet),
nameof(WinderData.IsT1VelocityChanged)
};
}
public T1VelocityPanel()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IDownBlowingSystemService downBlowingSystemService)
{
this.downBlowingSystemService = downBlowingSystemService;
this.DataContext = this.downBlowingSystemService;
this.setPlan = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.WinderData,
update_propertynames
);
this.downBlowingSystemService.WinderData.PropertyChanged += WinderData_PropertyChanged;
}
private void WinderData_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (downBlowingSystemService is Reflect_SeviceClient)
{
var client = downBlowingSystemService as Reflect_SeviceClient;
if (client.IsInPushValue)
{
return;
}
}
if (e.PropertyName == nameof(WinderData.T1VelocitySet))
{
//TODO 检测是否会发送modbus写!!!
downBlowingSystemService.WinderData.IsT1VelocityChanged = true;
downBlowingSystemService.WinderData.IsT1VelocityChanged = false;
}
}
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
if (this.setPlan != null)
{
setPlan.Dispose();
setPlan = null;
}
}
}
}
using FLY.DownBlowing.Common;
using FLY.DownBlowing.IService;
using FLY.OBJComponents.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// VelocityCtrlPanel.xaml 的交互逻辑
/// </summary>
public partial class VelocityCtrlPanel : UserControl
{
static string[] update_propertynames;
IDownBlowingSystemService downBlowingSystemService;
SetPLCUpdatePlan setPlan_winder;
static VelocityCtrlPanel()
{
update_propertynames = new string[] {
nameof(WinderData.T1Current),
nameof(WinderData.IsT1On),
nameof(WinderData.IsT1OnSet),
nameof(WinderData.IsT1CalenderRollerClosed),
nameof(WinderData.IsT1CalenderRollerClosedSet),
nameof(WinderData.T2TensionSet),
nameof(WinderData.T2Tension),
nameof(WinderData.T2Current),
nameof(WinderData.IsT2On),
nameof(WinderData.IsT2OnSet),
nameof(WinderData.IsT2CalenderRollerClosed),
nameof(WinderData.IsT2CalenderRollerClosedSet),
nameof(WinderData.T3TensionSet),
nameof(WinderData.T3Tension),
nameof(WinderData.T3Current),
nameof(WinderData.IsT3On),
nameof(WinderData.IsT3OnSet),
nameof(WinderData.IsT3CalenderRollerClosed),
nameof(WinderData.IsT3CalenderRollerClosedSet),
nameof(WinderData.OwTensionSet),
nameof(WinderData.OwTension),
nameof(WinderData.OwCurrent),
nameof(WinderData.IsOwOn),
nameof(WinderData.IsOwOnSet)
};
}
public VelocityCtrlPanel()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IDownBlowingSystemService downBlowingSystemService)
{
this.downBlowingSystemService = downBlowingSystemService;
this.DataContext = this.downBlowingSystemService;
this.setPlan_winder = new SetPLCUpdatePlan(
this.downBlowingSystemService.PLCos,
this.downBlowingSystemService.WinderData,
update_propertynames
);
}
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
{
if (this.setPlan_winder != null) {
setPlan_winder.Dispose();
setPlan_winder = null;
}
}
}
}
<flyctrllib:WindowBigClose x:Class="FLY.DownBlowing.UI.Client.UiModule.WdMeasure"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:flyctrllib="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:local="clr-namespace:FLY.DownBlowing.UI.Client"
mc:Ignorable="d"
Title="Window_Frequency" WindowStartupLocation="CenterScreen" SizeToContent="WidthAndHeight" MinHeight="300" MinWidth="300">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="WinderPanelStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid Background="{StaticResource Color_background}">
<StackPanel Margin="5,20" >
<StackPanel Margin="{StaticResource ControlMargin}">
<TextBlock Style="{StaticResource Styles.Text.FieldHeader}"
Foreground="{StaticResource Color_title}"
Text="计量设置" VerticalAlignment="Center" HorizontalAlignment="Center"
FontSize="44" />
</StackPanel>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="1">
<StackPanel Margin="{StaticResource ControlMargin}">
<TextBlock Style="{StaticResource Styles.Text.FieldHeader.Editable}"
Foreground="{StaticResource Color_title_activity}"
Text="设定" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource Styles.Text.FieldContent.Input}"
Foreground="{StaticResource Color_text_activity}"
Background="{StaticResource Color_text_activity_background}"
Text="{Binding MeasureLenSet,StringFormat={}{0:F0}}" />
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
Foreground="{StaticResource Color_unit}"
Text="mm" />
</StackPanel>
</StackPanel>
<StackPanel Margin="{StaticResource ControlMargin}">
<TextBlock Style="{StaticResource Styles.Text.FieldHeader.Editable}"
Foreground="{StaticResource Color_title_activity_warning}"
Text="预警" />
<StackPanel Orientation="Horizontal">
<TextBox Style="{StaticResource Styles.Text.FieldContent.Input}"
Foreground="{StaticResource Color_text_activity_warning}"
Background="{StaticResource Color_text_activity_background_warning}"
Text="{Binding MeasurePreWarning,StringFormat={}{0:F0}}" />
<TextBlock Style="{StaticResource Styles.Text.FieldContent.Unit}"
Foreground="{StaticResource Color_unit}"
Text="mm" />
</StackPanel>
</StackPanel>
</StackPanel>
</Grid>
<Button Style="{StaticResource Styles.Button.Apply}" Click="button_ok_Click" VerticalAlignment="Bottom"/>
</StackPanel>
</Grid>
</flyctrllib:WindowBigClose>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// Window_Frequency.xaml 的交互逻辑
/// </summary>
public partial class WdMeasure : FLY.ControlLibrary.WindowBigClose
{
public WdMeasureVm viewmodel = new WdMeasureVm();
public WdMeasure()
{
InitializeComponent();
}
public void Init(int measureLenSet, int measurePreWarning)
{
viewmodel.MeasureLenSet = measureLenSet;
viewmodel.MeasurePreWarning = measurePreWarning;
this.DataContext = viewmodel;
}
private void button_ok_Click(object sender, RoutedEventArgs e)
{
this.DialogResult = true;
this.Close();
}
}
public class WdMeasureVm:INotifyPropertyChanged
{
public int MeasureLenSet { get; set; }
public int MeasurePreWarning { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
}
<UserControl x:Class="FLY.DownBlowing.UI.Client.UiModule.WinderPanel"
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:local="clr-namespace:FLY.DownBlowing.UI.Client.UiModule"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors" xmlns:ut="clr-namespace:FLY.DownBlowing.UI.Client.UnitTests"
mc:Ignorable="d"
d:DesignWidth="960" d:DesignHeight="890" >
<!--1920*1080 下图表区 1600 * 954
1280*1024 下图表区 960 * 890
1388*768 下图表区 1060 * 634-->
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="WinderPanelStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Viewbox Stretch="Uniform" HorizontalAlignment="Left" VerticalAlignment="Top">
<Grid d:DataContext="{StaticResource downBlowingSystemUt}">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition />
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel >
<local:T1VelocityPanel x:Name="t1VelocityPanel"/>
<local:ExAirPanel x:Name="exAirPanel"/>
</StackPanel>
<local:VelocityCtrlPanel x:Name="velocityCtrlPanel" Grid.Column="1"/>
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<local:CenterPanel x:Name="centerPanel" Grid.Column="1"/>
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition />
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<local:FlowPumpPanel x:Name="flowPumpPanel"/>
<local:MeasureLenPanel x:Name="measureLenPanel" Grid.Column="1" Panel.ZIndex="2"/>
</Grid>
<local:OtherPanel x:Name="otherPanel" Grid.Row="1"/>
</Grid>
</Grid>
<local:RotaryPanel x:Name="rotaryPanel" Grid.Row="2" />
</Grid>
</Viewbox>
</UserControl>
using FLY.DownBlowing.IService;
using MultiLayout.UiModule;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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 Unity;
namespace FLY.DownBlowing.UI.Client.UiModule
{
/// <summary>
/// WinderPanel.xaml 的交互逻辑
/// </summary>
public partial class WinderPanel : UserControl
{
IUnityContainer container;
IDownBlowingSystemService downBlowingSystem;
public WinderPanel()
{
InitializeComponent();
}
[InjectionMethod]
public void Init(
IUnityContainer container,
IDownBlowingSystemService downBlowingSystem)
{
this.container = container;
this.downBlowingSystem = downBlowingSystem;
this.container.BuildUp(this.velocityCtrlPanel);
this.container.BuildUp(this.t1VelocityPanel);
this.container.BuildUp(this.exAirPanel);
this.container.BuildUp(this.exAirPanel);
this.container.BuildUp(this.centerPanel);
this.container.BuildUp(this.flowPumpPanel);
this.container.BuildUp(this.measureLenPanel);
this.container.BuildUp(this.otherPanel);
this.container.BuildUp(this.rotaryPanel);
}
}
public class UiModule2_WinderPanel : IUiModule2
{
/// <summary>
/// 控件标题
/// 它的值取决于culture
/// </summary>
public string Title => "下吹.收卷";
public ComponentType Type => ComponentType.Graph;
public bool IsUnique => true;
/// <summary>
/// 控件
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetComponent(int id, IUnityContainer container)
{
WinderPanel graph = new WinderPanel();
container.BuildUp(graph);
return graph;
}
/// <summary>
/// 控件缩略图,用于编辑界面时,大致看看
/// 创建时,需要给它唯一ID,让加载自己的数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public FrameworkElement GetThumbnail()
{
return new System.Windows.Controls.Grid();
}
/// <summary>
/// 给出全部控件ID, 控件自行删除没有的参数
/// </summary>
/// <param name="IDs"></param>
public void MatchParam(int[] IDs)
{
}
}
}
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:flyctrl="clr-namespace:FLY.ControlLibrary;assembly=FLY.ControlLibrary">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.DownBlowing.UI.Client;component/Themes/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--表格-->
<Style TargetType="StackPanel" x:Key="SpStyle_Editable">
<Setter Property="Orientation" Value="Horizontal"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Background" Value="{StaticResource Color_text_activity_background}"/>
<Setter Property="Margin" Value="5"/>
</Style>
<Style TargetType="StackPanel" x:Key="SpStyle_ReadOnly">
<Setter Property="Orientation" Value="Horizontal"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="5"/>
</Style>
<Style TargetType="TextBlock" x:Key="TextBlockStyle_Header" BasedOn="{StaticResource Styles.Text.FieldHeader.Editable}">
<Setter Property="Margin" Value="30,3"/>
<Setter Property="Foreground" Value="White"/>
</Style>
<Style TargetType="TextBlock" x:Key="TextBlockStyle_RowHeader" BasedOn="{StaticResource Styles.Text.FieldHeader}">
<Setter Property="Margin" Value="30,3"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style TargetType="Rectangle" x:Key="RectStyle_RowHeaderEditBackground">
<Setter Property="Fill" Value="{StaticResource Brushes.Activity}"/>
<Setter Property="Stroke" Value="{StaticResource Color_table_border}"/>
</Style>
<Style TargetType="Rectangle" x:Key="RectStyle_RowHeaderBackground">
<Setter Property="Fill" Value="{StaticResource Brushes.Static}"/>
<Setter Property="Stroke" Value="{StaticResource Color_table_border}"/>
</Style>
<Style TargetType="flyctrl:NoToggleButton" x:Key="ButonStyle_rOrg" >
<Setter Property="Margin" Value="{StaticResource ControlMargin}"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="OffBrush" Value="{StaticResource Color_static}" />
<Setter Property="OnBrush" Value="{StaticResource Color_on}" />
<Setter Property="OffLabel" Value="复位" />
<Setter Property="OnLabel" Value="复位中" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="flyctrl:NoToggleButton">
<Border Background="Transparent">
<Grid x:Name="grid" Style="{StaticResource GridStyle_ButtonShadow}" >
<Ellipse Stretch="Uniform" Fill="White" Margin="2" Width="40" Height="{Binding RelativeSource={RelativeSource Mode=Self},Path=Width}"/>
<iconPacks:PackIconMaterial x:Name="icon" Kind="Bullseye" Foreground="{TemplateBinding OffBrush}" Width="50" Height="{Binding RelativeSource={RelativeSource Mode=Self},Path=Width}"/>
<TextBlock x:Name="tbOnOff" Margin="0,0,0,-10" Padding="2" Foreground="White" FontSize="15" VerticalAlignment="Bottom" HorizontalAlignment="Center"
Background="{TemplateBinding OffBrush}"
Text="{TemplateBinding OffLabel}"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="icon" Property="Foreground" Value="{Binding OnBrush,RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
<Setter TargetName="tbOnOff" Property="Text" Value="{Binding OnLabel,RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
<Setter TargetName="tbOnOff" Property="Background" Value="{Binding OnBrush,RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="icon" Property="Width" Value="46"/>
<Setter TargetName="grid" Property="Margin" Value="2"/>
<Setter TargetName="grid" Property="Effect" Value="{x:Null}" />
<Setter Property="Opacity" Value="1"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0.7"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Geometry x:Key="Geometry_light">
M510.707071 140.282828C343.973495 140.282828 208.808081 275.448242 208.808081 442.181818c0 166.734869 135.165414 301.89899 301.89899 301.89899 166.734869 0 301.89899-135.164121 301.89899-301.89899 0-166.733576-135.164121-301.89899-301.89899-301.89899z
m217.056969 314.181818c-18.531556 0-34.417778-15.896566-34.417777-31.79701 0-50.344081-18.531556-90.096485-55.59596-121.890909-37.064404-31.800889-76.774141-47.696162-119.135677-47.696161-21.178182 0-34.412606-13.252525-34.412606-34.450101 0-18.548364 13.234424-31.802182 34.412606-31.802182 63.539717 0 119.135677 21.202747 169.439677 63.597899 50.298828 42.397737 74.127515 100.693333 74.127515 172.240161 0 15.901737-13.239596 31.798303-34.417778 31.798303z
</Geometry>
<Style TargetType="flyctrl:NoToggleButton" x:Key="NoToggleButtonStyle_light" >
<Setter Property="Margin" Value="0"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="1"/>
<Setter Property="OffBrush" Value="{StaticResource Color_extinguish}" />
<Setter Property="OnBrush" Value="{StaticResource Color_bright}" />
<Setter Property="IsEnabled" Value="False" />
<Setter Property="OnLabel" Value="{Binding Content,RelativeSource={RelativeSource Mode=Self}}"/>
<Setter Property="OffLabel" Value="{Binding Content,RelativeSource={RelativeSource Mode=Self}}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="flyctrl:NoToggleButton">
<StackPanel Orientation="Horizontal">
<Path x:Name="icon" Data="{StaticResource Geometry_light}" Stretch="Uniform" Width="30" Margin="2" Fill="{TemplateBinding OffBrush}"/>
<TextBlock x:Name="tbOnOff" Text="{TemplateBinding OffLabel}" Style="{StaticResource Styles.Text.FieldHeader}" Foreground="{StaticResource Color_text}"/>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="icon" Property="Fill" Value="{Binding OnBrush,RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
<Setter TargetName="tbOnOff" Property="Text" Value="{Binding OnLabel,RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
\ No newline at end of file
......@@ -128,6 +128,19 @@ namespace FLY.DownBlowing.UI.Client.UnitTests
TAreas[i].TempPV5 = 30;
TAreas[i].TempPV6 = 29;
}
WinderData.OwTension = 10.123f;
WinderData.OwTensionSet = 10;
WinderData.IsT3On = true;
WinderData.T1Velocity = 50.3f ;
WinderData.T1VelocitySet = 45f;
WinderData.OwMeasureLen = 10000.23f;
WinderData.OwMeasureLenSet = 1000;
WinderData.OwMeasurePreWarning = 10;
WinderData.IsOwMeasureOn = true;
}
string Index2Number(int index)
......
......@@ -46,7 +46,6 @@ namespace FLY.DownBlowing.Client
public TempArea[] TAreas { get; set; }
#endregion
public event Action ResetItemsEvent;
PLCProxySystemServiceClient plcos;
public IPLCProxySystemService PLCos => plcos;
......@@ -55,7 +54,7 @@ namespace FLY.DownBlowing.Client
{
Init();
}
public DownBlowingSystemServiceClient(UInt32 serviceId, string connName) : base(serviceId, connName)
public DownBlowingSystemServiceClient(UInt32 serviceId, string connName) : base(serviceId)//, connName)
{
Init();
ConnName = connName;
......
This diff is collapsed.
......@@ -13,7 +13,7 @@ namespace FLY.DownBlowing.Server
/// <summary>
/// OBJ服务端口
/// </summary>
public int OBJ_Port { get; set; } = 20000;
public int OBJ_Port { get; set; } = 20004;
/// <summary>
/// 数据库保持时间 默认6个月
......
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