当前位置:首页 > Windows程序 > 正文

WPF之设置多控件样式

2021-03-28 Windows程序

需求是这样的,系统要监测风,雨,雪多个自然灾害。在界面上有这些灾害突发的报警框。本来报警框的背景是由于级别不同显示不同的颜色,但是现在发现,当报警背景为蓝色是,黑色字体 看不出来。又由于技术文档上规定背景颜色了,所以现在只能改变所有lbl的字体。而这些控件都是WPF自定义控件的一些 元素。

要实现这个功能,有很多种方式。WPF的好处 就是既可以像Html+CSS 去设置, 也可以像Winform一样去更改。重点说一下解决方式。


这个功能要调用的有大概10多处,每个窗体有6个左右lbl,所以每次给每个控件挨个赋值是绝对不能用的。

先看一下样式和自定义控件代码。

样式:

<span style="font-family:KaiTi_GB2312;"> <UserControl x:Class="ICT.RCS.Modules.SingleLine.Facilities.UserControlFile.ucSnowAlert" xmlns="" xmlns:x="" xmlns:mc="" xmlns:d="" mc:Ignorable="d" d:DesignHeight="150" d:DesignWidth="340" BorderThickness="1" BorderBrush="#AAAAAA"> <Grid x:Name="grdSnowAlert" Height="150"> <Grid.Resources > <Style TargetType="Label" > <Setter Property="FontSize" Value="12"/> <Setter Property="Foreground" Value="{Binding FontColorBrush,UpdateSourceTrigger=PropertyChanged}"/> <Setter Property="Background" Value="{Binding FontColorBrush,UpdateSourceTrigger=PropertyChanged}"/> <Setter Property="HorizontalAlignment" Value="Left" /> <Setter Property="VerticalAlignment" Value="Center"></Setter> <Setter Property="FontFamily" Value="Microsoft YaHei"/> </Style> </Grid.Resources> <Grid.RowDefinitions> <RowDefinition Height=" 30" ></RowDefinition> <RowDefinition Height=" 30" ></RowDefinition> <RowDefinition Height=" 30" ></RowDefinition> <RowDefinition Height=" 30"></RowDefinition> <RowDefinition Height=" 30"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="60*"></ColumnDefinition> <ColumnDefinition Width="100*"></ColumnDefinition> <ColumnDefinition Width="60*"></ColumnDefinition> <ColumnDefinition Width="120*"></ColumnDefinition> </Grid.ColumnDefinitions> <Label Content="雪 深 报 警" Width="322" HorizontalAlignment="Center" FontWeight="Bold" Grid.ColumnSpan="4" Margin="0,4,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Height="27"/> <Border Grid.Column="0" BorderThickness="0,1,1,1" BorderBrush="#AEAEAE" Grid.Row="1" > <Label Content="监测点" HorizontalAlignment="Center" Margin="5,-2,5,2"/> </Border> <Border Grid.Row=" 1" Grid.Column=" 2" BorderBrush="#AEAEAE" BorderThickness="1"> <Label Content="报警时间" HorizontalAlignment="Center" /> </Border> <Border Grid.Row=" 2" Grid.Column="0" BorderBrush="#AEAEAE" BorderThickness="0,0,1,1"> <Label Content="影响区间" HorizontalAlignment="Center" /> </Border> <Border Grid.Row=" 3" Grid.Column=" 0" BorderBrush="#AEAEAE" BorderThickness ="0,0,1,1"> <Label Content="限速区段" HorizontalAlignment="Center" Margin="0,-1,0,1"/> </Border> <Border Grid.Column="1" BorderBrush="#AEAEAE" BorderThickness ="0,1,0,1" Grid.Row="1"> <Label x:Name="lblSnowCheckPoint" Content="" Margin="0,0,-1,0" Width="100" /> </Border> <Border Grid.Row="1" Grid.Column=" 3" BorderBrush="#AEAEAE" BorderThickness ="0,1,0,1"> <Label x:Name="lblSnowAlarmTime" Content="" Margin="0,-1,0,1"/> </Border> <Border Grid.Row=" 2" Grid.Column=" 1" Grid.ColumnSpan=" 3" BorderBrush="#AEAEAE" BorderThickness ="0,0,0,1"> <Label x:Name="lblSnowEffectArea" Content="" /> </Border> <Border Grid.Row=" 3" Grid.Column=" 1" BorderBrush="#AEAEAE" BorderThickness ="0,0,0,1"> <Label x:Name="lblSnowLockArea" Content="" /> </Border> <Border Grid.Row=" 3" Grid.Column=" 2" BorderBrush="#AEAEAE" BorderThickness="1,0,1,1"> <Label Content="处置措施" HorizontalAlignment="Center" Foreground="Black"/> </Border> <Border Grid.Row="3" Grid.Column=" 3" BorderBrush="#AEAEAE" BorderThickness ="0,0,0,1"> <Label x:Name="lblSnowCommand" Content="" /> </Border> <Button x:Name="btnAlert" Grid.ColumnSpan="4" Content="报 警 确 认" Grid.Column="0" HorizontalAlignment="Center" Height="20" Grid.Row="4" VerticalAlignment="Center" Width="75" Margin="0" Click="Button_Click" IsEnabled="False"/> </Grid> </UserControl> </span>
现在界面是这样的。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68987.html