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

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;
}
}
}