chr
2024-09-04 d7be195b0e1949c7b38bce2ad83ae974cbfac094
PdmAlert/MainWindow.xaml
@@ -6,115 +6,194 @@
        xmlns:local="clr-namespace:PdmAlert"
        mc:Ignorable="d"
        WindowStyle="None"
        Topmost="True"
        ResizeMode="NoResize"
        WindowStartupLocation="Manual"
        Loaded="Window_Loaded"
        Deactivated="Window_Deactivated"
        ShowInTaskbar="False"
        Title="MainWindow" Height="600" Width="400">
    <Window.Resources>
        <Brush x:Key="MainBorder">#0d4d84</Brush>
        <Brush x:Key="MainMenu">#1d6eb2</Brush>
        <Brush x:Key="ChildBorder">#3692e1</Brush>
        <Brush x:Key="MainStatusBar">#1d6eb2</Brush>
        <ResourceDictionary>
            <FontFamily x:Key="iconfont">
                /PdmAlert;component/Icon/#iconfont
            </FontFamily>
            <Brush x:Key="MainBorder">#0d4d84</Brush>
            <Brush x:Key="MainMenu">#1d6eb2</Brush>
            <Brush x:Key="ChildBorder">#3692e1</Brush>
            <Brush x:Key="MainStatusBar">#1d6eb2</Brush>
        <Brush x:Key="SecondaryImportant">Orange</Brush>
        <Brush x:Key="Important">#e17933</Brush>
        <Brush x:Key="ImportantFont">#FFF</Brush>
            <Brush x:Key="SecondaryImportant">Orange</Brush>
            <Brush x:Key="Important">#e17933</Brush>
            <Brush x:Key="ImportantFont">#FFF</Brush>
        <Brush x:Key="ButtonColor">#103156</Brush>
        <Brush x:Key="ButtonSelected">#02579E</Brush>
        <Brush x:Key="ButtonFont">White</Brush>
        <Brush x:Key="ButtonFontSelected">White</Brush>
        <Style x:Key="WindowButton" TargetType="Button">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="FontWeight" Value="SemiBold"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="Width" Value="50"/>
            <Setter Property="FontSize" Value="20"/>
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="BorderBrush" Value="Transparent"/>
            <Brush x:Key="ButtonColor">#103156</Brush>
            <Brush x:Key="ButtonSelected">#02579E</Brush>
            <Brush x:Key="ButtonFont">White</Brush>
            <Brush x:Key="ButtonFontSelected">White</Brush>
            <Style x:Key="WindowButton" TargetType="Button">
                <Setter Property="FontFamily" Value="{StaticResource iconfont}"/>
                <Setter Property="Background" Value="Transparent"/>
                <Setter Property="FontWeight" Value="SemiBold"/>
                <Setter Property="Foreground" Value="Black"/>
                <Setter Property="Width" Value="50"/>
                <Setter Property="FontSize" Value="30"/>
                <Setter Property="BorderThickness" Value="1"/>
                <Setter Property="BorderBrush" Value="Transparent"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border x:Name="border" Width="{TemplateBinding Width}" Background="{TemplateBinding Background}"
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Border x:Name="border" Width="{TemplateBinding Width}" Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0">
                            <Label x:Name="label" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                                <Label x:Name="label" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                           HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
                           Foreground="{TemplateBinding Foreground}"
                                   Content="{TemplateBinding Content}"/>
                        </Border>
                            </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="border" Property="Background" Value="Gray"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter TargetName="border" Property="Background" Value="Gray"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        <Style x:Key="WindowCloseButton" BasedOn="{StaticResource WindowButton}" TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border x:Name="border" Width="{TemplateBinding Width}" Background="{TemplateBinding Background}"
            <Style x:Key="WindowCloseButton" BasedOn="{StaticResource WindowButton}" TargetType="Button">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="Button">
                            <Border x:Name="border" Width="{TemplateBinding Width}" Background="{TemplateBinding Background}"
            BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0">
                            <Label x:Name="label" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                                <Label x:Name="label" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
               HorizontalContentAlignment="Center" VerticalContentAlignment="Center" 
               Foreground="{TemplateBinding Foreground}"
                       Content="{TemplateBinding Content}"/>
                        </Border>
                            </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="border" Property="Background" Value="Red"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter TargetName="border" Property="Background" Value="Red"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        <Style x:Key="ChildWindowButton" BasedOn="{StaticResource WindowButton}" TargetType="Button">
            <Setter Property="FontSize" Value="15"/>
            <Setter Property="Width" Value="30"/>
            <Setter Property="Background" Value="{StaticResource ChildBorder}"/>
        </Style>
            <Style x:Key="ChildWindowButton" BasedOn="{StaticResource WindowButton}" TargetType="Button">
                <Setter Property="FontSize" Value="15"/>
                <Setter Property="Width" Value="30"/>
                <Setter Property="Background" Value="{StaticResource ChildBorder}"/>
            </Style>
        <Style x:Key="ChildWindowCloseButton" BasedOn="{StaticResource ChildWindowButton}" TargetType="Button">
        </Style>
            <Style x:Key="ChildWindowCloseButton" BasedOn="{StaticResource ChildWindowButton}" TargetType="Button">
        <Style x:Key="LinkButton" TargetType="Button">
            <Setter Property="FontFamily" Value="{StaticResource iconfont}"/>
            <Setter Property="Foreground" Value="{StaticResource ChildBorder}"/>
            </Style>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <TextBlock Style="{x:Null}" x:Name="label" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                           Foreground="{TemplateBinding Foreground}"
                                   Text="{TemplateBinding Content}"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
            <Style x:Key="LinkButton" TargetType="{x:Type Button}" >
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ButtonBase}">
                            <ContentPresenter x:Name="buttonContent" TextBlock.FontSize="{TemplateBinding FontSize}"
                        TextBlock.FontFamily="{StaticResource iconfont}"
                        TextBlock.Foreground="{StaticResource ChildBorder}"
                        Margin="0,0,5,0"
                        VerticalAlignment="Center"
                        HorizontalAlignment="Center"
                        Content="{TemplateBinding Content}"/>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter TargetName="buttonContent" Property="TextBlock.Foreground" Value="Purple"/>
                                    <Setter TargetName="buttonContent" Property="Cursor" Value="Hand"/>
                                </Trigger>
                            </ControlTemplate.Triggers>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </ResourceDictionary>
    </Window.Resources>
    <StackPanel>
        <StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right">
            <Button Style="{StaticResource WindowButton}" Click="Button_Click">刷新</Button>
            <Button Style="{StaticResource WindowButton}" Click="Button_Click">切换用户</Button>
            <Button Style="{StaticResource WindowCloseButton}" Click="Hide_Click">最小化</Button>
        </StackPanel>
    <Border BorderBrush="Black" BorderThickness="1">
        <Grid>
            <Button Click="Button_Click">测试</Button>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Border Grid.Row="0" Background="LightGray">
                <DockPanel LastChildFill="True">
                    <Button DockPanel.Dock="Right" Style="{StaticResource WindowCloseButton}" Click="Hide_Click" ToolTip="最小化">&#xe67a;</Button>
                    <Button DockPanel.Dock="Right" Style="{StaticResource WindowButton}" Click="SwitchUser_Click" ToolTip="切换用户">&#xe6ed;</Button>
                    <Button DockPanel.Dock="Right" Style="{StaticResource WindowButton}" Click="Refresh_Click" BorderBrush="Black" ToolTip="刷新">&#xe600;</Button>
                    <Label Content="{Binding userInfo}" FontSize="20" VerticalContentAlignment="Center"/>
                </DockPanel>
            </Border>
            <AdornerDecorator Grid.Row="1">
                <Grid x:Name="mainContent" >
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                        <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <DockPanel Grid.Row="0" LastChildFill="True" HorizontalAlignment="Stretch" >
                        <Button DockPanel.Dock="Right" Margin="0,0,20,0" FontSize="16" Style="{StaticResource LinkButton}" Click="ReadAll_Click">全部已读</Button>
                        <Label DockPanel.Dock="Left" FontSize="16" Content="{Binding messageTitle}"/>
                    </DockPanel>
                    <ListView BorderThickness="0,1,0,1" Grid.Row="1" ItemsSource="{Binding messages}">
                        <ListView.ItemContainerStyle>
                            <Style TargetType="{x:Type ListViewItem}">
                                <Setter Property="Focusable" Value="False"/>
                                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                            </Style>
                        </ListView.ItemContainerStyle>
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <DockPanel LastChildFill="True">
                                    <Button DockPanel.Dock="Right" FontSize="16" Margin="0,0,15,0"
                                        DataContext="{Binding}"
                                        Click="SingleRead_Click"
                                        Style="{StaticResource LinkButton}">已读</Button>
                                    <StackPanel DockPanel.Dock="Right">
                                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
                                            <Label FontSize="18" FontWeight="Bold" Content="{Binding titile}"/>
                                            <Label FontSize="18" FontWeight="Bold" Content="{Binding sendTime}"/>
                                        </StackPanel>
                                        <Label FontSize="16" Content="{Binding msgContent}"/>
                                    </StackPanel>
                                </DockPanel>
                            </DataTemplate>
                        </ListView.ItemTemplate>
                    </ListView>
                    <StatusBar Grid.Row="2" VerticalAlignment="Center">
                        <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                            <Ellipse Width="12" Height="12"  VerticalAlignment="Center">
                                <Ellipse.Style>
                                    <Style TargetType="Ellipse">
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding socketStatus}" Value="Error">
                                                <Setter Property="Shape.Fill" Value="Red"/>
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding socketStatus}" Value="Success">
                                                <Setter Property="Shape.Fill" Value="Green"/>
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Ellipse.Style>
                            </Ellipse>
                            <Label FontSize="12" Content="{Binding statusMessage}"/>
                        </StackPanel>
                    </StatusBar>
                </Grid>
            </AdornerDecorator>
        </Grid>
    </StackPanel>
    </Border>
</Window>