在wpf中绑定颜色的R G B属性

2023-11-22

我有一个自定义类“FavoriteColor”,它具有三个属性,R, G and B。现在我想绘制一个矩形并用这些 R、G 和 B 值填充它(使用数据绑定)。我在 xaml 中尝试了以下代码片段,但出现了编译时错误。

                <Rectangle Width="10" Height="10" Grid.Column="4">
                    <Rectangle.Fill>
                        <SolidColorBrush>
                            <SolidColorBrush.Color>
                                <Color R="{Binding Path=R}" />
                                <Color G="{Binding Path=G}" />
                                <Color B="{Binding Path=B}" />
                            </SolidColorBrush.Color>
                        </SolidColorBrush>
                    </Rectangle.Fill>
                </Rectangle>

它表示 Color 类的属性 R、G 和 B 不是依赖属性。我知道您只能将数据绑定到依赖属性,但在这种情况下,如何将 R、G 和 B 与矩形的填充颜色绑定。

除了声明一个类型颜色的属性然后在设置 R、G 和 B 时初始化它之外,还有其他方法吗?另外为什么颜色类的 R、G 和 B 不是依赖属性?


让我们使用 MultiBinding 和 IMultiValueConverter 来完成此操作。这是完整的示例。

首先,Window1 的 xaml。我们将设置三个滑块并通过 SolidColorBrush 将它们的值绑定到窗口的背景属性。

<Window x:Class="WpfApplication16.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:my="clr-namespace:WpfApplication16"
    Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <my:RgbConverter x:Key="RgbConverter" />
    </Window.Resources>
    <Window.Background>
        <SolidColorBrush>
            <SolidColorBrush.Color>
                <MultiBinding Converter="{StaticResource RgbConverter}">
                    <Binding Path="Value" ElementName="redSlider" />
                    <Binding Path="Value" ElementName="greenSlider" />
                    <Binding Path="Value" ElementName="blueSlider" />
                </MultiBinding>
            </SolidColorBrush.Color>
        </SolidColorBrush>
    </Window.Background>
    <StackPanel>
        <Slider Minimum="0" Maximum="255" x:Name="redSlider" />
        <Slider Minimum="0" Maximum="255" x:Name="greenSlider" />
        <Slider Minimum="0" Maximum="255" x:Name="blueSlider" />
    </StackPanel>
</Window>

接下来是转换器。请注意,我在这里没有进行任何错误检查 - 您确实应该检查values数组为 3 并且各个值是有效字节等。

public class RgbConverter : IMultiValueConverter
{
    #region IMultiValueConverter Members

    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var r = System.Convert.ToByte(values[0]);
        var g = System.Convert.ToByte(values[1]);
        var b = System.Convert.ToByte(values[2]);

        return Color.FromRgb(r, g, b);
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    #endregion
}

就是这样!不需要其他代码隐藏。

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

在wpf中绑定颜色的R G B属性 的相关文章

  • 如何使用 Robot Framework 在控制台输出中添加颜色

    我想在 RobotFramework 的控制台输出中添加一些颜色 我尝试使用控制台颜色代码 例如 message Set Variable hello world Log To Console e 0 36 49m message e 0
  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • ObjectController 上的绑定 - Ember.js

    当您尝试将绑定添加到ObjectController它不起作用 App FailController Em ObjectController extend content null myBinding App router myContro
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 如何使 WPF 应用程序在 Web 浏览器上运行

    我们有一个用 WPF 编写的现有应用程序 我们正在寻找一种迁移它的方法 以便它可以在 Web 浏览器上运行 深入研究后 我们似乎需要找到一种将代码编译为 WebAssembly 的方法 但我不确定它对于现有的完全加载的 WPF 应用程序有多
  • WPF:Prism 对于小型应用程序来说是不是太过分了?

    如果我不将我的应用程序分成不同的模块 否则我会认为 Prism 确实是可行的方法 我应该使用 Prism 吗 我知道 Prism 提供了一个方便的实现ICommand 我可以自己在一页代码中完成 并为我们提供IEventAggregator
  • Wpf TextBlock 中的垂直文本

    是否可以垂直显示 TextBlock 中的文本 以便所有字母彼此堆叠 不使用 LayoutTransform 旋转 还没有人提到使用纯 XAML 垂直堆叠任意字符串的字母 不旋转它们 的明显而简单的方法
  • 控件更改时 ObjectDataSource 创建两次

    我将 ObjectDataSource 与 GridView 一起使用 并在代码隐藏中使用 OnObjectCreated 处理程序 如果我以编程方式更改 GridView 上的子控件值 则整个控件会在同一请求中再次进行数据绑定 如 OnO
  • 如何在运行时添加到 TreeView 目录

    我有一个TreeView我想允许用户添加和删除子项目 在探索基本功能时 我使用button and a textbox添加此子项 当用户点击button a new TreeViewItem需要创建并设置为我的父项的子项TreeView与t
  • WPF控件默认大小

    为 wpf 应用程序定义自定义资源主题时 我可以设置宽度 高度等 如何找到这些属性的默认值 即框架中提供的控件中使用的值 WPF 控件通常不包含任何类型的默认大小 WPF 的主要功能点之一是 除非您指定大小 否则所有内容都会动态调整大小 如
  • 如何枚举控件的所有依赖属性?

    我有一些 WPF 控件 例如 文本框 如何枚举该控件的所有依赖属性 如 XAML 编辑器所做的那样 不需要使用反射 恕我直言 这是一个坏主意 因为框架已经为此提供了实用程序类 但它们并不明显找到 以下是基于这篇文章的答案 枚举绑定 http
  • 将浮点值转换为灰度十六进制颜色值

    这个问题又快又简单 我有一个二维浮点数组 0 0000000 到 1 0000000 我想将这些数字转换为颜色值 000000 到 ffffff 请注意 我所说的只是灰度值 0 黑色 0 5 中灰色 1 白色 有谁知道如何用 javascr
  • 是什么导致 WPF 打印机输出被光栅化?

    我在 WPF 中遇到了许多打印问题 其中正在打印的特定项目组合会突然触发打印机输出的光栅化 导致打印机输出丑陋且庞大 并可能导致打印每页需要 30 秒 我发现在控件上设置任何级别的不透明度之类的事情通常会触发此问题 我忘记了它还有什么作用
  • WPF:通过拖放重新排序 WrapPanel 内容?

    我正在寻找一种通过拖放对 WPF WrapPanel 的内容 项目 重新排序的方法 我只想单击一个项目并将其拖动到新位置 据我了解 这是一项非常常见的任务 我想知道有人已经这样做了 或者知道如何实现此功能 我已经进行了谷歌搜索 但什么也没找
  • Qt 相当于 .NET 数据绑定吗?

    Qt 中是否有相当于 NET 数据绑定的功能 我想使用引用数据库中特定实体的 QString 填充一些组合框和其他小部件 但是 如果我可以将数据绑定到这些字符串 而不是基于新的组合框选择再次查询数据库 或者基于构建我自己的将使用 QStri
  • 创建带有部分的选项卡式侧边栏 WPF

    我正在尝试创建一个带有部分的选项卡式侧边栏 如 WPF 中的以下内容 我考虑过几种方法 但是有没有更简单 更优雅的方法呢 方法一 列表框 Using a ListBox并将 SelectedItem 绑定到右侧内容控件所绑定的值 为了区分标
  • wpf,如何限制TextBox的MaxLength?

  • 设置文本视图 Android 的文本颜色

    在 string xml 文件中我使用以下标签
  • 如何使取消按钮像“X”按钮一样工作?

    在我的 XAML 文件中 我有一个窗口 我试图将其设置为无论用户单击 X 按钮还是单击 取消 按钮 行为都是相同的 我的缩写代码如下 public partial class Dialog Window private void Windo

随机推荐

  • 如何实例化不同版本的 InternetExplorerDriver - Selenium 2?

    只是想知道如何实例化不同版本的 InternetExplorerDriver 这就是我创建 IE 驱动程序的方法 WebDriver ieWebDriver new InternetExplorerDriver 但我无法区分 IE6 IE7
  • Java中如何计算整数的尾随零? (例如:234000 => 3 个零)

    标题几乎是不言自明的 1232 gt 0 1231030 gt 1 2000 gt 3 34444400000 gt 5 如果它适合一个int long 只需检查模 10 的数字是否为 0 并保留一个计数器 long x if x 0 re
  • 如果我将变量“close”全局定义为“0”,为什么它会被记录为“false”?

    我知道这一定是非常基本的东西 但我不明白范围是如何工作的 我想要closed变量在整个 JavaScript 文件中都是已知的 我有类似的东西 在 jQuery 中 var closed 0 function console log clo
  • Youtube Iframe 没有全屏按钮

    也许是星期五下午 但由于某种原因 我似乎无法在嵌入的 Youtube 视频上显示全屏按钮 我所做的只是复制从 Youtube 视频生成的共享代码 例如使用这段代码http jsfiddle net chricholson v8sjL I s
  • java 正则表达式中捕获组的行为混乱

    In this answer我推荐使用 s replaceFirst 0 d 0 1 但有两个人抱怨结果包含字符串 null 例如 23 null 这可以解释为 1 i e group 1 being null 可以通过以下方式进行转换St
  • 如何在java中创建合成字段?

    如何在 Java 中创建合成字段 java中的合成字段只能在运行时创建吗 如果没有 在编译时是否有符合标准的方法 无需更改类文件中的某些字节 当语言的 奇怪之处 需要它们时 它们是由编译器创建的 一个简单的例子是使用内部类 public c
  • PhP中如何检查mysql条目是否为空?

    这是我从表中回显的描述变量 description mysql result result i description 有时第 i 条记录是空的并且没有任何数据 没有描述 我想要做的是对空记录回显 没有可用的描述 if isset desc
  • ROAuth 不再使用 httr? [推特API]

    我在 AWS Ubuntu Server 12 04 2 LTS 上运行 R Studio 并通过浏览器访问 R Studio 当我尝试使用该包在 Twitter API 上进行身份验证时ROAuth与代码 credential lt OA
  • Angular 2 - 带有 formControlName 的 ng-bootstrap 下拉菜单

    有没有办法使ng bootstrap 下拉控件使用 Angular 反应形式 Given div class d inline block div
  • 在 iOS 中的特定时间唤醒应用程序

    我需要构建一个具有闹钟功能的应用程序 这意味着用户将能够设置应用程序唤醒并执行某些操作的时间 我看到我可以发布并捕获本地推送通知 但我需要在应用程序唤醒时运行一些代码 iOS 提供这种行为吗 谢谢 不可以 您无法在本地唤醒应用程序 但在 i
  • 如何从二维数组中删除重复项? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有一个二维数组 7 3 7 3 3 8 7 3 7 3 1 2 有什么聪明的方法可以从中删除重复的元素吗 它应该返回这样的数组 7 3 3 8 1 2 Thanks arr 7 3
  • 为什么Java中没有静态类

    我是java新手 当我查看语言规范时 我发现不能声明静态类 但我们可以拥有静态内部类 我有点困惑为什么我们不能拥有顶级静态类 如果我想创建一个仅包含实用方法的类 我可以选择静态类 Java 开发人员限制此功能的原因是什么 这不是限制 你可以
  • 覆盖 var 上的 setter

    一个小问题 希望有一个小答案 我有一个var在我的班级中 每当设置时都需要触发某种更新 我知道一个var隐式地获取两个方法 一个 getter 和一个 setter 是否可以以某种方式重写 setter 方法以确保触发更新 而不需要递归 我
  • 如何实施 Authorize.NET 托管支付 iFrame 和 Laravel

    我发现 Authorize NET 提供的官方文档和 github 示例是一堆非常混乱的东西 你不需要 这篇文章是对过去几个小时工作的总结 希望对其他人有所帮助 本指南假设您不需要收据页面 并且希望在成功付款后自动让用户继续前进 网站后端是
  • 如何将字节数组转换为十六进制字符串,反之亦然?

    如何将字节数组转换为十六进制字符串 反之亦然 您可以使用Convert ToHexString从 NET 5 开始 还有一种反向操作的方法 Convert FromHexString 对于旧版本的 NET 您可以使用 public stat
  • 在 Intellij IDEA 14.1.4 中:无法运行程序“C:/Program Files (x86)/Java/jdk1.8.0_45/bin/java”

    我试图在 IDEA 中运行基于 java 的 Play 2 0 应用程序 但在编译时 出现以下错误 信息 内部缓存已损坏或格式过时 强制项目重建 模块 web server 生产 java io IOException 无法运行程序 C P
  • Unicode URL 对 SEO 有多友好?

    正如标题所说 包含 Unicode 字符的 URL 对 SEO 有多友好 Edit 为了澄清 我的意思是包含非 ASCII 字符但有效 Unicode 的 URL 如果我是 Google 其他搜索引擎的权威 我不会认为 unicode UR
  • 在圆上生成点

    import random import math import matplotlib pyplot as plt def circle x y for i in range 0 1000 angle random uniform 0 1
  • 如何“覆盖”[] 以接受 C++ 中的两个参数?

    我正在尝试在 C 中创建一个位向量类来对某些硬件进行建模 在我所知道的大多数 HDL 硬件描述语言 中 特定位的引用如下 my vector bit position 子向量的引用如下 my vector msb lsb or my vec
  • 在wpf中绑定颜色的R G B属性

    我有一个自定义类 FavoriteColor 它具有三个属性 R G and B 现在我想绘制一个矩形并用这些 R G 和 B 值填充它 使用数据绑定 我在 xaml 中尝试了以下代码片段 但出现了编译时错误