Commit 909dd72a authored by 潘栩锋's avatar 潘栩锋 🚴

添加 把状态的报警框提取出来 变为style 供其它使用

parent 0ca4b51c
......@@ -9,7 +9,7 @@
<Thickness x:Key="ControlMargin">5</Thickness>
<!--Microsoft Sans Serif-->
<!--<FontFamily x:Key="FontFamily.Field">Microsoft Sans Serif</FontFamily>-->
<FontFamily x:Key="FontFamily.Field">YouYuan</FontFamily>
<FontFamily x:Key="FontFamily.Field">Microsoft Sans Serif</FontFamily>
<!--<FontFamily x:Key="FontFamily.Field">YouYuan</FontFamily>-->
</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="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Converter/Dictionary_MyConv.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style TargetType="Button" x:Key="DynAreaErrorStyle" BasedOn="{StaticResource Styles.Button.Empty}">
<Setter Property="Command" Value="{Binding OpenWarningCmd}"/>
<Setter Property="Visibility" Value="{Binding IsError,Converter={StaticResource visbilityconv}}"/>
<Setter Property="Content">
<Setter.Value>
<Border Style="{StaticResource Styles.Module.Border}" Background="{StaticResource Brushes.Validation}" >
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Path Margin="{StaticResource ControlMargin}" 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 ErrMsg}"/>
</Grid>
</Border>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
\ No newline at end of file
......@@ -11,6 +11,7 @@
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.Thick.Base.UI;component/Converter/Dictionary_MyConv.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.Thick.Base.UI;component/Themes/DynAreaErrorStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style TargetType="Rectangle" x:Key="IOStyle">
......@@ -26,7 +27,8 @@
</Style>
<local:DynAreaIOVmUt x:Key="ioVm" />
<local:DynAreaErrorVm x:Key="errorVm" IsError="True" ErrMsg="枫莱尔控制器连接断开"/>
<local:DynAreaErrorVm x:Key="errorVm" IsError="True" ErrMsg="枫莱尔控制器连接断开 枫莱尔控制器连接断开"/>
</ResourceDictionary>
</UserControl.Resources>
<Grid Height="100" >
......@@ -113,42 +115,7 @@
</Border>
</Grid>
</Button>
<Button x:Name="grid_error" Style="{StaticResource Styles.Button.Empty}" Command="{Binding OpenWarningCmd}"
Visibility="{Binding IsError,Converter={StaticResource visbilityconv}}"
d:DataContext="{StaticResource errorVm}"
>
<Border Style="{StaticResource Styles.Module.Border}" Background="Red" >
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Path Margin="{StaticResource ControlMargin}" 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>
<Viewbox Grid.Column="1" Margin="{StaticResource ControlMargin}" MaxWidth="190" MaxHeight="80">
<TextBlock VerticalAlignment="Center" MaxWidth="190" TextWrapping="Wrap" FontSize="30" Foreground="White" Text="{Binding ErrMsg}"/>
</Viewbox>
</Grid>
</Border>
</Button>
<Button x:Name="grid_error" Style="{StaticResource DynAreaErrorStyle}" d:DataContext="{StaticResource errorVm}"/>
</Grid>
</UserControl>
......@@ -257,7 +257,125 @@ namespace FLY.Thick.Base.UI.UiModule
}
}
public class DynAreaErrorVm2 : INotifyPropertyChanged
{
/// <summary>
/// 有异常
/// </summary>
public bool IsError { get; set; }
/// <summary>
/// 异常消息
/// </summary>
public string ErrMsg { get; set; }
public RelayCommand OpenWarningCmd { get; }
public event PropertyChangedEventHandler PropertyChanged;
IWarningSystem2Service warningSystem;
IUnityContainer container;
string serverName;
DispatcherTimer timer_error;
private int reason_list_index = -1;
public DynAreaErrorVm2()
{
OpenWarningCmd = new RelayCommand(OpenWarning);
}
public void Init(
IUnityContainer container,
IWarningSystem2Service warningSystem,
string serverName)
{
this.container = container;
this.warningSystem = warningSystem;
this.serverName = serverName;
//报警原因轮流显示
timer_error = new DispatcherTimer();
timer_error.Interval = TimeSpan.FromSeconds(3);
timer_error.Tick += (s, e) =>
{
reason_list_index--;
if (reason_list_index < 0)
if (warningSystem.ReasonList != null && warningSystem.ReasonList.Count() > 0)
reason_list_index = warningSystem.ReasonList.Count();
else
reason_list_index = -1;
UpdateError();
};
warningSystem.PropertyChanged += WarningSystem_PropertyChanged;
UpdateError();
}
private void WarningSystem_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(Reflect_SeviceClient.IsConnected))
{
UpdateError();
}
else if (e.PropertyName == nameof(warningSystem.ReasonList))
{
if (warningSystem.ReasonList != null && warningSystem.ReasonList.Count() > 0)
reason_list_index = warningSystem.ReasonList.Count() - 1;
else
reason_list_index = -1;
UpdateError();
}
}
void UpdateError()
{
if (this.warningSystem is FObjBase.FObjServiceClient)
{
var client = this.warningSystem as FObjBase.FObjServiceClient;
if (!client.IsConnected)
{
ErrMsg = $"{serverName}服务器连接断开";
IsError = true;
reason_list_index = -1;
timer_error.Stop();
return;
}
}
if (warningSystem.ReasonList != null && warningSystem.ReasonList.Count() > 0)
{
if (reason_list_index >= warningSystem.ReasonList.Count())
reason_list_index = warningSystem.ReasonList.Count() - 1;
else if (reason_list_index < 0)
reason_list_index = 0;
ErrMsg = warningSystem.ReasonList[reason_list_index].Description;
IsError = true;
timer_error.Start();
}
else
{
IsError = false;
ErrMsg = "";
reason_list_index = -1;
timer_error.Stop();
}
}
private void OpenWarning()
{
if (!WdPassword.Authorize("Warning"))
return;
PgErrorTable2 p = new PgErrorTable2();
p.Init(container, warningSystem);
FlyLayoutManager.NavigationService.Navigate(p);
}
}
public class UiModule2_DynAreaIO : IUiModule2
{
public string Title => "测厚.IO状态(报警)";
......
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