fix(PMHeaterView): 修正PMHeaterView视图中PID限幅值输入框绑定错的问题。

PID限幅值输入框绑定的PIDLimitLowerSP等属性类型更改为string。
SetPIDLimits方法中转化PIDLimitLowerSP等属性为double。
This commit is contained in:
SL 2024-04-23 23:26:54 +08:00
parent 49bd1b6b38
commit 424ac5b575
4 changed files with 47 additions and 11 deletions

View File

@ -25,7 +25,7 @@
SnapsToDevicePixels="True">
<UserControl.Resources>
<converters:StringToDoubleConverter x:Key="StringToDoubleConverter"/>
<converters:DoubleToStringConverter x:Key="DoubleToStringConverter"/>
<converters:EnumDisplayConverter x:Key="EnumDisplayConverter"/>
<ObjectDataProvider x:Key="EnumHeatStrategy" MethodName="GetValues"
ObjectType="{x:Type sys:Enum}">
@ -1470,7 +1470,9 @@
<controls:TextBoxEx
FontFamily="Arial"
FontSize="14"
Text="{Binding PIDLimitLowerSP, Mode=OneWayToSource}" />
EditBoxMode="Decimal"
Text="{Binding PIDLimitLowerSP,
Mode=OneWayToSource}" />
</Border>
<Border
@ -1504,6 +1506,7 @@
BorderBrush="{DynamicResource Table_BD}"
BorderThickness="0,0,1,1">
<controls:TextBoxEx
EditBoxMode="Decimal"
FontFamily="Arial"
FontSize="14"
Text="{Binding PIDLimitUpperSP, Mode=OneWayToSource}" />
@ -1540,6 +1543,7 @@
BorderBrush="{DynamicResource Table_BD}"
BorderThickness="0,0,1,1">
<controls:TextBoxEx
EditBoxMode="Decimal"
FontFamily="Arial"
FontSize="14"
Text="{Binding PIDRateLimitSP, Mode=OneWayToSource}" />
@ -1678,7 +1682,7 @@
<Grid Grid.Row="1" Grid.Column="0">
<Label
Margin="22,13,-22.5,-12.5"
Margin="22,-120,-22.5,0"
Content="{lex:Loc ID_TXT_Confinement_Must_In_Up_State}"
FontSize="30"
FontWeight="Bold"

View File

@ -1065,25 +1065,25 @@ namespace MECF.Framework.UI.Client.CenterViews.Modules.PM
[Subscription("TC1.PIDRateLimit")]
public double PIDRateLimitFB { get; set; }
public double PIDLimitLowerSP { get; set; }
public string PIDLimitLowerSP { get; set; }
public double PIDLimitUpperSP { get; set; }
public string PIDLimitUpperSP { get; set; }
public double PIDRateLimitSP { get; set; }
public string PIDRateLimitSP { get; set; }
public void SetPIDLimits()
{
if (PIDLimitLowerSP is < 0 or > 100)
if (double.TryParse(PIDLimitLowerSP, out var lower) && lower is < 0 or > 100)
DialogBox.ShowError("PID Limit Lower(%) is out of range 0% ~ 100%.");
else if (PIDLimitUpperSP is < 0 or > 100)
else if (double.TryParse(PIDLimitUpperSP, out var upper) && upper is < 0 or > 100)
DialogBox.ShowError("PID Limit Upper(%) is out of range 0% ~ 100%.");
else if (PIDRateLimitSP is < 0 or > 100)
else if (double.TryParse(PIDRateLimitSP, out var rate) && rate is < 0 or > 100)
DialogBox.ShowError("PID Limit Upper(%) is out of range 0% ~ 100%.");
else if (PIDLimitLowerSP >= PIDLimitUpperSP)
else if (lower >= upper)
DialogBox.ShowError("PID Limit Lower(%) can not be greater than Upper(%).");
else
InvokeClient.Instance.Service.DoOperation($"{SystemName}.{TCUnits.TC1}.SetPIDLimit",
PIDLimitLowerSP, PIDLimitUpperSP, PIDRateLimitSP);
lower, upper, rate);
}
#endregion

View File

@ -0,0 +1,31 @@
using System;
using System.Globalization;
using System.Windows.Data;
namespace MECF.Framework.UI.Core.Converters
{
public class DoubleToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
return "";
if(value is double dbl)
return dbl.ToString(CultureInfo.InvariantCulture);
return value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value == null)
return double.NaN;
if (double.TryParse(value.ToString(), out var dbl))
return dbl;
return double.NaN;
}
}
}

View File

@ -292,6 +292,7 @@
<Compile Include="Converters\CenterBorderGapMaskConverter.cs" />
<Compile Include="Converters\ColorConverter_IsTestOK.cs" />
<Compile Include="Converters\ColorToBrushConverter.cs" />
<Compile Include="Converters\DoubleToStringConverter.cs" />
<Compile Include="Converters\EnumDescriptionConverter.cs" />
<Compile Include="Converters\EnumDisplayConverter.cs" />
<Compile Include="Converters\GeneralConverter.cs" />