feat: #172 添加昆明长水国际机场大屏

This commit is contained in:
denglihong2007
2025-06-21 20:10:29 +08:00
parent 6ddb96381d
commit 1197d81a5f
6 changed files with 218 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@@ -17,6 +17,7 @@
<None Remove="Assets\ChengduShuangliuAirport\logo-GTJT.png" />
<None Remove="Assets\ChengduShuangliuAirport\planetakingoff.png" />
<None Remove="Assets\ChengduShuangliuAirport\SecondaryScreen.png" />
<None Remove="Assets\KunmingChangshuiAirport\PrimaryScreen.png" />
<None Remove="Assets\Niuzhou\PrimaryScreen.png" />
<None Remove="Assets\ShenyangBei\PlatformScreen.png" />
<None Remove="Assets\TianjinMetro\PlatformScreen.png" />
@@ -55,6 +56,9 @@
<Compile Update="Views\ChengduDong\SecondaryScreenView.xaml.cs">
<SubType>Code</SubType>
</Compile>
<Compile Update="Views\KunmingChangshuiAirport\PrimaryScreenView.xaml.cs">
<SubType>Code</SubType>
</Compile>
<Compile Update="Views\ChengduShuangliuAirport\SecondaryScreenView.xaml.cs">
<SubType>Code</SubType>
</Compile>
@@ -135,6 +139,7 @@
<Resource Include="Assets\Harbin\PrimaryScreen.png" />
<Resource Include="Assets\HarbinXi\PlatformScreen.png" />
<Resource Include="Assets\Jinanxi\SmallScreen.png" />
<Resource Include="Assets\KunmingChangshuiAirport\PrimaryScreen.png" />
<Resource Include="Assets\Mianyang\PlatformScreen.png" />
<Resource Include="Assets\Niuzhou\PrimaryScreen.png" />
<Resource Include="Assets\Shanghai\OutsideScreen.png" />

View File

@@ -139,6 +139,17 @@
"Text"
]
},
{
"UniqueId": "KunmingChangshuiAirport.PrimaryScreen",
"Title": "昆明长水机场主要看板",
"Region": "昆明",
"Author": "电排骨",
"Type": "车站大屏",
"Parameters": [
"Station",
"Text"
]
},
{
"UniqueId": "Shanghai.OutsideScreen",
"Title": "上海站站外看板",

View File

@@ -0,0 +1,16 @@
using CRSim.Core.Models;
using CRSim.Core.Services;
namespace CRSim.ScreenSimulator.ViewModels.KunmingChangshuiAirport
{
public class PrimaryScreenViewModel : ScreenViewModel
{
public PrimaryScreenViewModel(ITimeService timeService, ISettingsService settingsService)
: base(timeService, settingsService)
{
Text = $"如需要任何帮助或有相关建议请拨打96566。";
ItemsPerPage = 20;
ScreenCount = 1;
StationType = StationType.Departure;
}
}
}

View File

@@ -0,0 +1,171 @@
<views:BaseScreenView x:Class="CRSim.ScreenSimulator.Views.KunmingChangshuiAirport.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.KunmingChangshuiAirport"
mc:Ignorable="d"
xmlns:converters="clr-namespace:CRSim.ScreenSimulator.Converters"
xmlns:converters1="clr-namespace:CRSim.Shared.Converters;assembly=CRSim.Shared"
xmlns:views="clr-namespace:CRSim.ScreenSimulator.Views"
FontFamily="微软雅黑" FontSize="14" Foreground="#BBD9FE" Background="#333C51">
<Window.Resources>
<converters1:ListToStringConverter x:Key="ListToStringConverter" Separator=", " />
<converters1:EmptyToVisibilityConverter x:Key="EmptyToVisibilityConverter" />
<converters1:DateTimeToStringConverter x:Key="DateTimeToStringConverter" Format="HH:mm" />
<converters:NumberToImageConverter x:Key="TrainNumberToImageConverter" />
<converters:IntAddOneConverter x:Key="IntAddOneConverter" />
<converters:ChineseToPinyinConverter x:Key="ChineseToPinyinConverter" Upper="False"/>
<converters:TrainStateConverter x:Key="TrainStateConverter" WaitingText="" CheckInText="Boarding" StopCheckInText="Gate Closed"/>
<converters:TrainStateColorConverter x:Key="TrainStateColorConverter" WaitingColor="Transparent" CheckInColor="#31D9E8" StopCheckInColor="#9D8A84"/>
<Style TargetType="DataGridColumnHeader">
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Background" Value="#333C51"/>
</Style>
<Style x:Key="CommonHeaderStyle" TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Left"/>
<Setter Property="Foreground" Value="#BBD9FE"/>
</Style>
<Style x:Key="CommonTextBlockStyle" TargetType="TextBlock">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="TextAlignment" Value="Left"/>
<Setter Property="Foreground" Value="#BBD9FE"/>
</Style>
<Style x:Key="CommonRowStyle" TargetType="DataGridRow">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#25262B" Offset="0.0" />
<GradientStop Color="#25262B" Offset="0.5" />
<GradientStop Color="#333C51" Offset="1.0" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<StackPanel Orientation="Vertical">
<views:BaseDataGrid ItemsSource="{Binding ScreenA}" RowHeight="31"
RowStyle="{StaticResource CommonRowStyle}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding DepartureTime, Converter={StaticResource DateTimeToStringConverter}}" MinWidth="60">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Width="{Binding RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}, Path=ActualWidth}">
<TextBlock Text="计划时间" Style="{StaticResource CommonHeaderStyle}"/>
<TextBlock Text="SCHED" Style="{StaticResource CommonHeaderStyle}"/>
</StackPanel>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock" BasedOn="{StaticResource CommonTextBlockStyle}"/>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding TrainNumber}" MinWidth="72">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Width="{Binding RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}, Path=ActualWidth}">
<TextBlock Text="航班号" Style="{StaticResource CommonHeaderStyle}"/>
<TextBlock Text="FLIGHT" Style="{StaticResource CommonHeaderStyle}"/>
</StackPanel>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock" BasedOn="{StaticResource CommonTextBlockStyle}"/>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Terminal,Converter={StaticResource ChineseToPinyinConverter}}" MinWidth="110">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Width="{Binding RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}, Path=ActualWidth}">
<TextBlock Text="目的/经停站" Style="{StaticResource CommonHeaderStyle}"/>
<TextBlock Text="TO/VIA" Style="{StaticResource CommonHeaderStyle}"/>
</StackPanel>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock" BasedOn="{StaticResource CommonTextBlockStyle}"/>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn MinWidth="47">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Width="{Binding RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}, Path=ActualWidth}">
<TextBlock Text="登机口" Style="{StaticResource CommonHeaderStyle}"/>
<TextBlock Text="GATE" Style="{StaticResource CommonHeaderStyle}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border Background="Yellow" Width="23" Height="23">
<TextBlock Text="{Binding TicketChecks,Converter={StaticResource ListToStringConverter}}" Foreground="Black"
VerticalAlignment="Center" TextAlignment="Center"/>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn MinWidth="110">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Width="{Binding RelativeSource={RelativeSource AncestorType=DataGridColumnHeader}, Path=ActualWidth}">
<TextBlock Text="航班状态" Style="{StaticResource CommonHeaderStyle}"/>
<TextBlock Text="STATUS" Style="{StaticResource CommonHeaderStyle}"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border>
<Border.Background>
<MultiBinding Converter="{StaticResource TrainStateColorConverter}">
<Binding Path="ArrivalTime" />
<Binding Path="DepartureTime" />
<Binding Path="State" />
</MultiBinding>
</Border.Background>
<TextBlock Foreground="White" VerticalAlignment="Center">
<TextBlock.Text>
<MultiBinding Mode="OneWay" Converter="{StaticResource TrainStateConverter}">
<Binding Path="ArrivalTime" />
<Binding Path="DepartureTime" />
<Binding Path="State" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</views:BaseDataGrid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock VerticalAlignment="Center" Grid.Column="0">
<TextBlock.Text>
<MultiBinding StringFormat="{}本屏显示时间:{0}-{1}">
<Binding Path="ScreenA[0].DepartureTime">
<Binding.Converter>
<converters1:DateTimeToStringConverter Format="HH:mm"/>
</Binding.Converter>
</Binding>
<Binding Path="ScreenA[19].DepartureTime">
<Binding.Converter>
<converters1:DateTimeToStringConverter Format="HH:mm"/>
</Binding.Converter>
</Binding>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
<StackPanel Grid.Column="3" Orientation="Horizontal" Background="White" Margin="4">
<TextBlock Margin="2" Width="40" TextAlignment="Center" Background="Black" Foreground="White" Text="{Binding CurrentPageIndex,Converter={StaticResource IntAddOneConverter}}"/>
<TextBlock Width="40" TextAlignment="Center" VerticalAlignment="Center" Foreground="Black" Text="{Binding PageCount}"/>
</StackPanel>
</Grid>
<TextBlock Margin="0,4" Text="{Binding Text}"/>
</StackPanel>
</views:BaseScreenView>

View File

@@ -0,0 +1,15 @@
using CRSim.ScreenSimulator.ViewModels.KunmingChangshuiAirport;
namespace CRSim.ScreenSimulator.Views.KunmingChangshuiAirport
{
public partial class PrimaryScreenView : BaseScreenView
{
public PrimaryScreenViewModel ViewModel { get; }
public PrimaryScreenView(PrimaryScreenViewModel viewModel)
{
InitializeComponent();
ViewModel = viewModel;
DataContext = viewModel;
}
}
}