C# WPF 评级控件类似于 Wifi 信号指示器

2024-04-03

我已经搜索了很多类似于下图中的 wifi 信号强度指示器的 WPF 评级控件,但我找不到一个

我尝试自己做,这就是结果:)

<Grid>
    <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="58" Margin="90,114,0,0" Stroke="Black" VerticalAlignment="Top" Width="22"/>
    <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="74" Margin="117,98,0,0" Stroke="Black" VerticalAlignment="Top" Width="22"/>
    <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="93" Margin="144,79,0,0" Stroke="Black" VerticalAlignment="Top" Width="22"/>
    <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="111" Margin="171,61,0,0" Stroke="Black" VerticalAlignment="Top" Width="22"/>
    <Rectangle Fill="#FFF4F4F5" HorizontalAlignment="Left" Height="124" Margin="198,48,0,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,0,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, Converter={StaticResource RatingConverter}, ConverterParameter=2}"/>
        <Rectangle Width="5" Height="15" Fill="{Binding RatingValue, Converter={StaticResource RatingConverter}, ConverterParameter=3}"/>
        <Rectangle Width="5" Height="20" Fill="{Binding RatingValue, Converter={StaticResource RatingConverter}, ConverterParameter=4}"/>
        <Rectangle Width="5" Height="25" Fill="{Binding RatingValue, Converter={StaticResource RatingConverter}, ConverterParameter=5}"/>
    </StackPanel>
</Grid>

Code:

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, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}

Usage:

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

Result:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# WPF 评级控件类似于 Wifi 信号指示器 的相关文章

  • 是否有与 posix_memalign 对应的 C++ 版本?

    当我打电话时posix memalign http man7 org linux man pages man3 posix memalign 3 html为类型的对象分配对齐的内存Foo在我的 C 代码中 我需要做一个reinterpret
  • 当我在组合框中选择一个项目时,如何防止 TextChanged 事件?

    我有一个TextChanged http msdn microsoft com en us library system windows forms control textchanged aspx我的事件ComboBox http msd
  • GetType() 在 Type 实例上返回什么?

    我在一些调试过程中遇到了这段代码 private bool HasBaseType Type type out Type baseType Type originalType type GetType baseType GetBaseTyp
  • 为什么pow函数比简单运算慢?

    从我的一个朋友那里 我听说 pow 函数比简单地将底数乘以它的指数的等价函数要慢 例如 据他介绍 include
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • 使用可变参数包类型扩展的 C++ 函数调用者包装器

    我绑定了一些 API 并且绑定了一些函数签名 如下所示 static bool WrapperFunction JSContext cx unsigned argc JS Value vp 我尝试将对象和函数包装在 SpiderMonkey
  • 类型约束

    我有以下类层次结构 class Header IEnumerable
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 为什么从字典中获取时会得到 Action<> 的克隆?

    我有以下字典 private Dictionary
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • C++ int 前面加 0 会改变整个值

    我有一个非常奇怪的问题 如果我像这样声明一个 int int time 0110 然后将其显示到控制台返回的值为72 但是当我删除前面的 0 时int time 110 然后控制台显示110正如预期的那样 我想知道两件事 首先 为什么它在
  • 在屏幕上获取字符

    我浏览了 NCurses 函数列表 似乎找不到返回已打印在屏幕上的字符的函数 每个字符单元格中存储的字符是否有可访问的值 如果没有的话Windows终端有类似的功能吗 我想用它来替换屏幕上某个值的所有字符 例如 所有a s 具有不同的特征
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli
  • 如何使用 C++11 using 语法键入定义函数指针?

    我想写这个 typedef void FunctionPtr using using 我该怎么做呢 它具有类似的语法 只不过您从指针中删除了标识符 using FunctionPtr void 这是一个Example http ideone
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str

随机推荐

  • .Net Framework 版本 C# 7.2 可用

    我尝试安装 net框架4 7 2 项目属性中目标框架仍然为空 我尝试运行的程序使用只读结构体 这是一部分C 7 2 你能指导我 Net Framework 版本有C 7 2 语言功能独立于 Net 版本 框架 核心 标准 您将需要使用能够理
  • OSX 状态菜单在 Swift 中不起作用

    我尝试使用 swift 将一个简单的状态菜单添加到状态栏 但它不会显示 与 Objective c 一起工作 AppDelegate h interface AppDelegate NSObject
  • 从苹果下载 iPhone 示例代码 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 iphone sdk 文档包含示例代码的链接 但您必须从网络上单独下载它们 有没有可以从苹果一次性下载的捆绑包 例如 阅读第一个 iPho
  • 当我更改配置设置时,Visual Studio 生成“Settings1.Designer.vb”

    有时 并非总是 当我在 我的项目 页面中编辑设置时 当我从那里添加一个设置或编辑一个值时 会收到错误消息 Settings is ambiguous between declaration in Modules
  • 跳进C语言的一个块

    如果我像这个例子一样跳进一个块 跳过 声明 include
  • 找到 2 个 java.sql.Timestamps 之间的小时或分钟差异?

    我存储一个java sql Timestamp in a PostgreSQL数据库为时间戳数据类型 我想找出数据库中存储的数据类型与当前数据类型之间的差异 以分钟或小时为单位 时间戳 这样做的最佳方法是什么 是否有内置方法 或者我必须将其
  • 文本背景颜色溢出

    我将背景颜色应用于国家 地区列表中的链接 总体来说效果很好 然而 对于名称较长的国家来说 它的效果不太好 我试图让黄色溢出一切并清楚地显示国家的全名 HTML div class flagList div class flagColumn
  • Jade 模板布局无法与 Node.js 结合使用

    我正在尝试在 Node js 中创建一个使用 Jade 模板和布局的简单服务器 由于某种原因 它只会加载模板而不加载布局 这是我所得到的 main js var express require express var app express
  • 如何正确使用Feature2D(如SimpleBlobDetector)? (Python + OpenCV)

    我正在尝试使用一些简单的代码运行斑点检测 img cv2 imread args image height width channels img shape params cv2 SimpleBlobDetector Params para
  • 如何绘制样本的 PMF?

    是否有任何函数或库可以帮助我绘制样本的概率质量函数 就像绘制样本的概率密度函数一样 例如 使用 pandas 绘制 PDF 就像调用以下命令一样简单 sample plot kind density 如果没有简单的方法 我如何计算 PMF
  • 有人知道 10 位原始 RGB 吗?关于全视

    我正在使用 Omnivision ov5620 http electronics123 net amazon datasheet OV5620 CLCC DS 20 1 3 pdf http electronics123 net amazo
  • NLog 在发布模式下不工作

    我正在使用 NLog 记录我的 asp net mvc C 应用程序中的异常 NLog 在发布模式下不工作 在调试模式下运行时也是如此 可能是什么问题 有什么解决办法吗 我和你遇到了同样的问题 ASP NET MVC 3 NET 4 IIS
  • OrientDB 中带有子选择的根空间查询

    我正在尝试组合一个查询来查找图中节点 2 公里以内的节点 假设我有一个数据集 标记了纳斯卡线中的一些地理符号 Name Latitude Longitude Hummingbird 14 692131 75 148892 Monkey 14
  • 如何选择哪个 iPhone 型号模拟器来运行我的 React Native 应用程序?

    我正在开发 React Native 应用程序 并在 iOS 模拟器上进行测试 但是 它始终在 iPhone 6 上运行 我不知道如何切换到其他 iPhone 型号 例如 iPhone 6 Plus 或 5 我可以通过转到模拟器 gt 硬件
  • 警告:活动未启动,其当前任务已被带到前面[重复]

    这个问题在这里已经有答案了 我觉得这个问题很常见 Stackoverflow 上的许多结果都谈到了这一点 一般的答案是 因为一个旧的应用程序正在运行 并且我尝试从 Eclipse 运行一个新的应用程序 但编译没有改变 所以 Android
  • 模板类类型别名在成员声明中无法替换

    假设你有一个模板class像这样 template
  • 如何清除“运行”->“参数”菜单中的“参数”字段?

    我正在使用 CodeGear RAD Studio IDE 为了使用命令行参数测试我的应用程序 我多次使用 运行 gt 参数 菜单中的 参数 字段 但每次我为它提供一个新值时 它都无法从 下拉框 中删除 我需要清理这个字段 删除所有值 因为
  • 在现实世界中扩展 Docker 容器

    我有一些关于扩展 Docker 容器的基本问题 我有 5 个不同的应用程序 它们彼此没有连接 在拥有容器之前 我会在每个虚拟机上运行 1 个应用程序 并在云中单独扩展和缩小它们 现在 有了容器 我就可以在虚拟机之上实现隔离 因此现在我可以运
  • 如果父级未被任何其他子级引用,则删除父级

    我有一个示例情况 parent表有一列名为id 引用于child表作为外键 删除子行时 如果父行未被任何其他子行引用 如何同时删除父行 在 PostgreSQL 中9 1 或更高版本您可以使用单个语句来完成此操作数据修改CTE https
  • C# WPF 评级控件类似于 Wifi 信号指示器

    我已经搜索了很多类似于下图中的 wifi 信号强度指示器的 WPF 评级控件 但我找不到一个 我尝试自己做 这就是结果