如何在Silverlight中创建类似WPF的数据触发器?

2024-02-23

我如何为 Silverlight 数据网格创建一个触发器,其中单元格背景颜色根据单元格值而变化? 我前段时间参与过一个 WPF 项目,我记得通过 xaml 中的 DataTriggers 实现这一点非常简单。然而,此功能似乎在 Silverlight 中不可用,我不知道从哪里开始。

谢谢大家。


首先,Silverlight 中触发器的替代品是 VisualStateManager。 VSM 实际上比触发器更强大,因为它允许您在状态更改时执行 StoryBoard。

如果您的情况不需要动画,我解决它的方法是使用 IValueConverter。在 DataTemplate 中创建一个 Border,并将背景画笔绑定到要用于更改背景画笔的 DataItem 属性。

    public class BrushConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
       value.ToString() == "Red" ? new SolidColorBrush(Color.Red) : SolidColorBrush(Color.Blue);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedExcpetion();
    }
}

然后,您的 XAML 将如下所示:

<Border Background={Binding InterestingProperty,Converter={StaticResource BrushConverter}} />

如果您确实需要动画,那么您将需要阅读 VisualStateManager。本质上,您要做的就是创建具有依赖属性的模板化或用户控件,然后当该属性更改时确定控件应处于什么状态,并调用可视状态管理器。语法是这样的

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

如何在Silverlight中创建类似WPF的数据触发器? 的相关文章

随机推荐

  • Inno Setup - 如何本地化组件和类型名称?

    如何本地化组件和类型名称 例如 Languages Name eng MessagesFile Idiomas English isl Name spa MessagesFile Idiomas Spanish isl 如果我选择英语 Ty
  • iOS CPU 配置文件:为什么这个线程会占用 99.9% 的 CPU?

    有时 当我加载表视图时 除了让表视图显示之外 我没有故意执行任何活动 我会等待几秒钟 然后 CPU 使用率就会飙升 我怎样才能找到原因 为什么这个线程会占用 99 9 的 CPU 我不知道 但这里有一些想法 负责的图书馆是UIKit 所以看
  • 暴露 Google Container Engine 中的两个端口

    是否可以在 Google 容器引擎中创建一个公开两个端口的 Pod 端口 8080 正在侦听传入内容 端口 80 将此内容分发给客户端 Google 给出了以下创建 Pod 的命令作为示例 kubectl run hello node im
  • JavaScript JSON 解析器告诉错误位置

    我在解析通过 WebSocket 接收的 JSON 时遇到了一些麻烦 原始问题 解析通过 WebSocket 接收到的 JSON 会导致错误 https stackoverflow com questions 7116035 parse j
  • 枚举类型的复选框列表 MVC Razor

    在我的 c net MVC 应用程序中 我想显示枚举类型的复选框列表 我有一个枚举类型 Flags public enum ModeType Undefined 0 Read 1 Edit 2 我的模型是 Public TrainingMo
  • https 设置后 django 站点 ERR_SSL_PROTOCOL_ERROR

    所以我正在尝试部署我的网站并且基本上尝试过 python manage py check deploy 并遵循它告诉我的一切 WARNINGS security W004 You have not set a value for the S
  • 使用部分字符串 lua 查找完整字符串

    我试图在表中查找整个字符串而不编写完整的字符串 Example maintable SecondString FirstString c First 我怎样才能使用字符串c无需输入整个字符串名称即可查找 FirstString 的完整名称
  • 带有 Bootstrap 布局的 jQuery UI 可拖动

    jQuery 可拖动元素位于引导样式列 col 下 例如 我有两个 row每列分为 4 列 col md 3 我试图将第一行列拖动到第二行可放置列上 但是当我拖动 Drag 元素时 它们总是位于 可放置 元素下方 我无法使用 Bootstr
  • Flutter ScreenState Dispose 方法异常

    当我尝试在颤动中从一个屏幕导航到另一个屏幕时 我收到一个异常 指出我要更改的 ScreenState 不会调用super dispose in its dispose方法 然而 被覆盖的dispose方法明确调用super dispose
  • 使用 l20n 本地化属性

    我想本地化一个placeholder具有 L20N 属性 我在他们的文档中找不到任何内容 并且这样做 毫不奇怪 不起作用
  • Dropzone上传的文件同名

    我有一个带有 dropzone 的普通表单 所有值和文件都上传到服务器 但是当我通过打印 FILES 变量检查它时 所有上传的文件与最后上传的文件具有相同的名称和扩展名 但具有正确的 mime 每个文件的类型 因此 当我上传具有不同文件类型
  • OpenCV 读取不起作用

    I have loop in my C code to open and process a set of images One of those is https i stack imgur com rUJnp gif https i s
  • 如何在 Python 中将表示二进制分数的字符串转换为数字

    假设我们有一个表示二进制分数的字符串 例如 1 以十进制数表示为 0 5 Python 中是否有一种标准方法可以将此类字符串转换为数字类型 无论是二进制还是十进制并不严格重要 对于整数 解决方案很简单 int 101 2 gt gt gt
  • 伪快速排序时间复杂度

    我知道快速排序有O n log n 平均时间复杂度 经常用于演示函数式语言的简洁性的伪快速排序 仅当您从足够远的地方看时 具有适当高的抽象级别时 它才是快速排序 如下 在 Haskell 中给出 quicksort Ord a gt a g
  • GDB:捕获信号并继续调试

    我试图在 GDB 中捕获浮点异常 SIGFPE 而不是将其传递给进程并继续调试 我已经给了 gdb 这个 handle SIGFPE stop nopass 当 SIGFPE 发生时 GDB 会停在正确的位置 问题是我不能也不知道如何继续调
  • 创建相对于 jetpack 中其他元素的垂直链组成 ConstraintLayout?

    我想使用 chainStyle Packed 将标题和描述文本链接到以图像为中心的位置 如何在 jetpack compose 中实现此目的 当我使用时createVerticalChain 它相对于父容器的创建链不是我想要的 有没有办法实
  • 使用 Visual Studio 2013 构建 64 位 Live555

    我正在尝试在 Windows 7 上使用 Visual Studio 2013 64 位构建 Live555 的组件 我尝试编辑 win32config 和 mak 文件 但没有成功 我已经在互联网上搜索了几个小时 并使用命令提示符尝试了各
  • 在 Code Igniter 2.02 中设置电子邮件

    我收到很多错误 我已经在不同的站点尝试了几个建议 删除了父函数 删除了数组 更新了我的 php ini 文件 但没有运气 这是我收到的 13 个错误中的第一个 遇到 PHP 错误 严重性 警告 消息 fsockopen function f
  • std::list 析构函数不阻塞

    我有一个多线程应用程序 有一个循环作为主线程等待用户输入 在正确的输入上 它应该停止循环并等待所有其他线程正确结束 为此 我创建了一个 std list 其中放置了为创建线程而创建的 std future 对象 std list
  • 如何在Silverlight中创建类似WPF的数据触发器?

    我如何为 Silverlight 数据网格创建一个触发器 其中单元格背景颜色根据单元格值而变化 我前段时间参与过一个 WPF 项目 我记得通过 xaml 中的 DataTriggers 实现这一点非常简单 然而 此功能似乎在 Silverl