C#WPF等级控制类似于Wifi信号指示器
发布时间:2020-12-16 01:58:31 所属栏目:百科 来源:网络整理
导读:我已经搜索了很多 WPF等级控制simliar到这个图像中的wifi信号强度指示器,但我找不到一个 我试着自己做,这是结果:) Grid Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="58" Margin="90,114,0" Stroke="Black" VerticalAlignment="Top" Widt
我已经搜索了很多
WPF等级控制simliar到这个图像中的wifi信号强度指示器,但我找不到一个
我试着自己做,这是结果:) <Grid> <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="58" Margin="90,114,0" Stroke="Black" VerticalAlignment="Top" Width="22"/> <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="74" Margin="117,98,0" Stroke="Black" VerticalAlignment="Top" Width="22"/> <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="93" Margin="144,79,0" Stroke="Black" VerticalAlignment="Top" Width="22"/> <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="111" Margin="171,61,0" Stroke="Black" VerticalAlignment="Top" Width="22"/> <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="124" Margin="198,48,0" Stroke="Black" VerticalAlignment="Top" Width="22"/> </Grid> 我需要根据评级值更改矩形颜色,例如: <l:UserControl1 RatingValue="3" /> 这将为前三个矩形着色 任何人都可以帮我这样做,或找到类似的控件吗? 解决方法
您可以创建一个IValueConverter来更改矩形的颜色
这是一个非常快速(粗略)的例子: XAML: <Grid Background="DarkBlue" > <Grid.Resources> <local:RatingConverter x:Key="RatingConverter" OnBrush="#FFFFFFFF" OffBrush="#50FFFFFF" /> <Style TargetType="Rectangle"> <Setter Property="HorizontalAlignment" Value="Left" /> <Setter Property="VerticalAlignment" Value="Bottom" /> <Setter Property="Margin" Value="5,0" /> </Style> </Grid.Resources> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <Rectangle Width="5" Height="5" Fill="{Binding RatingValue,Converter={StaticResource RatingConverter},ConverterParameter=1}"/> <Rectangle Width="5" Height="10" Fill="{Binding RatingValue,ConverterParameter=2}"/> <Rectangle Width="5" Height="15" Fill="{Binding RatingValue,ConverterParameter=3}"/> <Rectangle Width="5" Height="20" Fill="{Binding RatingValue,ConverterParameter=4}"/> <Rectangle Width="5" Height="25" Fill="{Binding RatingValue,ConverterParameter=5}"/> </StackPanel> </Grid> 码: namespace WpfApplication14 { /// <summary> /// Interaction logic for UserControl1.xaml /// </summary> public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); DataContext = this; } public int RatingValue { get { return (int)GetValue(RatingValueProperty); } set { SetValue(RatingValueProperty,value); } } // Using a DependencyProperty as the backing store for RatingValue. This enables animation,styling,binding,etc... public static readonly DependencyProperty RatingValueProperty = DependencyProperty.Register("RatingValue",typeof(int),typeof(UserControl1),new UIPropertyMetadata(0)); } public class RatingConverter : IValueConverter { public Brush OnBrush { get; set; } public Brush OffBrush { get; set; } public object Convert(object value,Type targetType,object parameter,System.Globalization.CultureInfo culture) { int rating = 0; int number = 0; if (int.TryParse(value.ToString(),out rating) && int.TryParse(parameter.ToString(),out number)) { if (rating >= number) { return OnBrush; } return OffBrush; } return Brushes.Transparent; } public object ConvertBack(object value,System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } } } 用法: <Window x:Class="WpfApplication14.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:l="clr-namespace:WpfApplication14" Title="MainWindow" Height="350" Width="525"> <Grid> <l:UserControl1 RatingValue="3" /> </Grid> </Window> 结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |