mirror of
https://github.com/denglihong2007/CRSim
synced 2026-05-14 23:55:36 +08:00
BIN
CRSim.ScreenSimulator/Assets/BeijingNan/PrimaryScreen.png
Normal file
BIN
CRSim.ScreenSimulator/Assets/BeijingNan/PrimaryScreen.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
@@ -94,6 +94,7 @@
|
||||
<ItemGroup>
|
||||
<Resource Include="Assets\Ankang\ExitScreen.png" />
|
||||
<Resource Include="Assets\BeijingXi\PrimaryScreen.png" />
|
||||
<Resource Include="Assets\BeijingNan\PrimaryScreen.png" />
|
||||
<Resource Include="Assets\Beijing\ArrivalScreen.png" />
|
||||
<Resource Include="Assets\ChengduDong\cdcz.png" />
|
||||
<Resource Include="Assets\ChengduDong\PillarTicketCheckScreen.png" />
|
||||
@@ -131,4 +132,4 @@
|
||||
<Resource Include="Assets\Zibo\TicketCheckScreen.png" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -11,10 +11,18 @@ namespace CRSim.ScreenSimulator.Converters
|
||||
{
|
||||
private ITimeService _timeService;
|
||||
private Settings _settings;
|
||||
public string DisplayMode { get; set; } = "Normal";
|
||||
|
||||
/*
|
||||
Normal: 标准显示。
|
||||
Alternating_Row_Colors: 候车状态隔行异色显示(第4个参数控制行号)。
|
||||
*/
|
||||
|
||||
public List<SolidColorBrush> WaitingColorList { get; set; } = [];
|
||||
public SolidColorBrush WaitingColor { get; set; } = new(Colors.White);
|
||||
public SolidColorBrush CheckingTicketsColor { get; set; } = new(Colors.LightGreen);
|
||||
public SolidColorBrush StopCheckingTicketsColor { get; set; } = new(Colors.Red);
|
||||
object IMultiValueConverter.Convert(object[] values, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
|
||||
object IMultiValueConverter.Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
var serviceProvider = (IServiceProvider)Application.Current.Resources["ServiceProvider"];
|
||||
_timeService = serviceProvider.GetRequiredService<ITimeService>();
|
||||
@@ -49,6 +57,9 @@ namespace CRSim.ScreenSimulator.Converters
|
||||
{
|
||||
return StopCheckingTicketsColor;
|
||||
}
|
||||
if (DisplayMode == "Alternating_Row_Colors" && values.Length > 3 && values[3] is int rowNumber){
|
||||
return WaitingColorList[rowNumber % WaitingColorList.Count];
|
||||
}
|
||||
return WaitingColor;
|
||||
}
|
||||
return new SolidColorBrush(Colors.Transparent);
|
||||
|
||||
@@ -321,5 +321,15 @@
|
||||
"Location",
|
||||
"Text"
|
||||
]
|
||||
},
|
||||
{
|
||||
"UniqueId": "BeijingNan.PrimaryScreen",
|
||||
"Title": "北京南站主要看板",
|
||||
"Region": "北京",
|
||||
"Author": "wxl0430",
|
||||
"Type": "车站大屏",
|
||||
"Parameters": [
|
||||
"Station"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,15 @@
|
||||
using CRSim.Core.Models;
|
||||
using CRSim.Core.Services;
|
||||
namespace CRSim.ScreenSimulator.ViewModels.BeijingNan
|
||||
{
|
||||
public class PrimaryScreenViewModel : ScreenViewModel
|
||||
{
|
||||
public PrimaryScreenViewModel(ITimeService timeService, ISettingsService settingsService)
|
||||
: base(timeService, settingsService)
|
||||
{
|
||||
ItemsPerPage = 10;
|
||||
PageCount = 1;
|
||||
StationType = StationType.Departure;
|
||||
}
|
||||
}
|
||||
}
|
||||
170
CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml
Normal file
170
CRSim.ScreenSimulator/Views/BeijingNan/PrimaryScreenView.xaml
Normal file
@@ -0,0 +1,170 @@
|
||||
<views:BaseScreenView x:Class="CRSim.ScreenSimulator.Views.BeijingNan.PrimaryScreenView"
|
||||
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:local="clr-namespace:CRSim.ScreenSimulator.Views.BeijingNan"
|
||||
mc:Ignorable="d"
|
||||
xmlns:views="clr-namespace:CRSim.ScreenSimulator.Views"
|
||||
xmlns:converters="clr-namespace:CRSim.ScreenSimulator.Converters"
|
||||
xmlns:converters1="clr-namespace:CRSim.Shared.Converters;assembly=CRSim.Shared"
|
||||
Title="引导屏" SizeToContent="WidthAndHeight"
|
||||
WindowStyle="None" AllowsTransparency="True" Background="Transparent"
|
||||
ResizeMode="NoResize">
|
||||
<views:BaseScreenView.Resources>
|
||||
<converters1:ListToStringConverter x:Key="ListToStringConverter" Separator="" />
|
||||
<converters1:DateTimeToStringConverter x:Key="DateTimeToStringConverter" Format="HH:mm" />
|
||||
<converters:TrainStateConverter x:Key="TrainStateConverter" WaitingText="正在候车"/>
|
||||
<converters:TrainStateColorConverter x:Key="TrainStateColorConverter" DisplayMode="Alternating_Row_Colors" CheckingTicketsColor="#1f5b54">
|
||||
<converters:TrainStateColorConverter.WaitingColorList>
|
||||
<SolidColorBrush Color="White"/>
|
||||
<SolidColorBrush Color="#edd16f"/>
|
||||
</converters:TrainStateColorConverter.WaitingColorList>
|
||||
</converters:TrainStateColorConverter>
|
||||
<converters:TextSpacingConverter x:Key="TextSpacingConverter" />
|
||||
<Style TargetType="DataGridColumnHeader">
|
||||
<Setter Property="Padding" Value="0"/>
|
||||
<Setter Property="Margin" Value="0"/>
|
||||
<Setter Property="BorderBrush" Value="Transparent"/>
|
||||
<Setter Property="BorderThickness" Value="0"/>
|
||||
</Style>
|
||||
<Style x:Key="CommonTextBlockStyle" TargetType="TextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Center"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="TextAlignment" Value="Center"/>
|
||||
</Style>
|
||||
<Style x:Key="CommonRowStyle" TargetType="DataGridRow">
|
||||
<Setter Property="Background" Value="#203874"/>
|
||||
<Setter Property="Foreground" Value="#ffffff"/>
|
||||
<Setter Property="BorderBrush" Value="#0c63da"/>
|
||||
<Setter Property="BorderThickness" Value="0,4,0,4"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=AlternationIndex}" Value="1">
|
||||
<Setter Property="Background" Value="#203874"/>
|
||||
<Setter Property="Foreground" Value="#edd16f"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=AlternationIndex}" Value="0">
|
||||
<Setter Property="Background" Value="#203874"/>
|
||||
<Setter Property="Foreground" Value="#ffffff"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
<Style x:Key="CommonHeaderStyle" TargetType="TextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
||||
<Setter Property="TextAlignment" Value="Center"/>
|
||||
<Setter Property="Background">
|
||||
<Setter.Value>
|
||||
<SolidColorBrush Color="#203874"/>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="Foreground">
|
||||
<Setter.Value>
|
||||
<SolidColorBrush Color="#eecbbe"/>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</views:BaseScreenView.Resources>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<DataGrid ItemsSource="{Binding LeftScreen, Mode=OneWay}" AutoGenerateColumns="False"
|
||||
CanUserResizeColumns="False" CanUserSortColumns="False" CanUserAddRows="False"
|
||||
CanUserResizeRows="False" CanUserReorderColumns="False" FontFamily="DengXian"
|
||||
IsReadOnly="True" GridLinesVisibility="None" RowHeight="28"
|
||||
RowStyle="{StaticResource CommonRowStyle}" FontWeight="SemiBold" FontSize="20"
|
||||
AlternationCount="2" HeadersVisibility="Column" IsEnabled="False">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Binding="{Binding TrainNumber}" MinWidth="110">
|
||||
<DataGridTextColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Vertical" Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}}">
|
||||
<TextBlock Text="车次" Style="{StaticResource CommonHeaderStyle}" Padding="0,6,0,3" FontSize="27"/>
|
||||
<Border Height="2" Background="#5172af" Margin="0,0,0,0"/>
|
||||
<TextBlock Text="Train" Style="{StaticResource CommonHeaderStyle}" FontSize="20" Padding="0,3,0,2"/>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTextColumn.HeaderTemplate>
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource CommonTextBlockStyle}"/>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
|
||||
<DataGridTextColumn Binding="{Binding Terminal, Converter={StaticResource TextSpacingConverter}}" MinWidth="130">
|
||||
<DataGridTextColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Vertical" Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}}">
|
||||
<TextBlock Text="终到站" Style="{StaticResource CommonHeaderStyle}" Padding="0,6,0,3" FontSize="27"/>
|
||||
<Border Height="2" Background="#5172af" Margin="0,0,0,0"/>
|
||||
<TextBlock Text="To" Style="{StaticResource CommonHeaderStyle}" FontSize="20" Padding="0,3,0,2"/>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTextColumn.HeaderTemplate>
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource CommonTextBlockStyle}"/>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
|
||||
<DataGridTextColumn Binding="{Binding DepartureTime, Converter={StaticResource DateTimeToStringConverter}}" MinWidth="110">
|
||||
<DataGridTextColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Vertical" Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}}">
|
||||
<TextBlock Text="开点" Style="{StaticResource CommonHeaderStyle}" Padding="0,6,0,3" FontSize="27"/>
|
||||
<Border Height="2" Background="#5172af" Margin="0,0,0,0"/>
|
||||
<TextBlock Text="Departs" Style="{StaticResource CommonHeaderStyle}" FontSize="20" Padding="0,3,0,2"/>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTextColumn.HeaderTemplate>
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource CommonTextBlockStyle}"/>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
|
||||
<DataGridTextColumn Binding="{Binding TicketChecks, Converter={StaticResource ListToStringConverter}}" MinWidth="100">
|
||||
<DataGridTextColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Vertical" Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}}">
|
||||
<TextBlock Text="检票口" Style="{StaticResource CommonHeaderStyle}" Padding="0,6,0,3" FontSize="27"/>
|
||||
<Border Height="2" Background="#5172af" Margin="0,0,0,0"/>
|
||||
<TextBlock Text="Gate" Style="{StaticResource CommonHeaderStyle}" FontSize="20" Padding="0,3,0,2"/>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTextColumn.HeaderTemplate>
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource CommonTextBlockStyle}"/>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
|
||||
<DataGridTextColumn MinWidth="160">
|
||||
<DataGridTextColumn.Binding>
|
||||
<MultiBinding Mode="OneWay" Converter="{StaticResource TrainStateConverter}">
|
||||
<Binding Path="ArrivalTime" />
|
||||
<Binding Path="DepartureTime" />
|
||||
<Binding Path="State" />
|
||||
</MultiBinding>
|
||||
</DataGridTextColumn.Binding>
|
||||
<DataGridTextColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Vertical" Width="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}}">
|
||||
<TextBlock Text="状态" Style="{StaticResource CommonHeaderStyle}" Padding="0,6,0,3" FontSize="27"/>
|
||||
<Border Height="2" Background="#5172af" Margin="0,0,0,0"/>
|
||||
<TextBlock Text="Status" Style="{StaticResource CommonHeaderStyle}" FontSize="20" Padding="0,3,0,2"/>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTextColumn.HeaderTemplate>
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource CommonTextBlockStyle}">
|
||||
<Setter Property="Foreground">
|
||||
<Setter.Value>
|
||||
<MultiBinding Converter="{StaticResource TrainStateColorConverter}">
|
||||
<Binding Path="ArrivalTime" />
|
||||
<Binding Path="DepartureTime" />
|
||||
<Binding Path="State" />
|
||||
<Binding RelativeSource="{RelativeSource AncestorType=DataGridRow}" Path="(ItemsControl.AlternationIndex)" />
|
||||
</MultiBinding>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</StackPanel>
|
||||
</views:BaseScreenView>
|
||||
@@ -0,0 +1,14 @@
|
||||
using CRSim.ScreenSimulator.ViewModels.BeijingNan;
|
||||
namespace CRSim.ScreenSimulator.Views.BeijingNan
|
||||
{
|
||||
public partial class PrimaryScreenView : BaseScreenView
|
||||
{
|
||||
public PrimaryScreenViewModel ViewModel { get; }
|
||||
public PrimaryScreenView(PrimaryScreenViewModel viewModel)
|
||||
{
|
||||
InitializeComponent();
|
||||
ViewModel = viewModel;
|
||||
DataContext = viewModel;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user