问题标签 [ivalueconverter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4635 浏览

c# - IValueCONverter 不工作

几个小时以来一直在谷歌上搜索这个问题,但看不到我哪里出错了。

我有以下转换器,它也只返回 Brushes.Red(尝试过 Colors.Red),但仍然没有运气。

现在在我的 xaml 中,我有以下代码:

我在顶部设置了以下命名空间:

现在我有以下绑定到堆栈面板的类:

数据绑定(值)工作得非常好,但是转换器不想启动,我试图在转换器的 Convert 方法中设置一个断点,但是在调试时不会触发,看起来好像我的调试器没有被调用。

任何人都可以对此有所了解吗?

0 投票
4 回答
539 浏览

wpf - 为什么将无操作转换器放在 Binding 上会改变其行为?

我正在测试我构建的用户控件,我遇到了一些对我来说莫名其妙的东西。

该控件是处理特定自定义类型值的 ComboBox 的扩展。它具有该自定义类型的依赖属性,该属性是绑定的目标属性。

我在设置器中有一个跟踪语句,我可以看到该属性正在设置。但它没有出现在我的用户控件中。

现在,通常我会说,好吧,我的用户控件中有一个错误。我可能会,虽然我对此感到困惑。但这个问题不是关于在我的控制中找到错误。继续阅读;这就是奇怪的地方。

我还使用 Bea Stollnitz 的小值转换器来帮助调试绑定:

这背后的想法是我将此转换器添加到我的绑定中,并且可以设置断点以查看将什么值推送到目标。好的,这工作得很好。我可以看到价值被推出。

事实上,它工作得有点太好了。如果 DebuggingConverter 附加到 Binding,则用户控件将显示该值。如果不是,它不会。

这怎么可能呢?什么都不做的值转换器如何影响绑定控件的行为?

编辑:

并不是说它可能会有所帮助,但这是用户控件的 XAML:

在第二个绑定上没有转换器,控件的行为就像我没有设置SelectedCode. 即使OnSelectedCodePropertyChanged处理程序中的跟踪语句显示e.Value确实包含正确的值。无论转换器是否连接,都会发生这种情况。

我一直在尝试通过思想实验对这个问题进行逆向工程:如果你想创建一个绑定的用户控件,如果一个无操作转换器附加到它的绑定,它的行为会发生变化,你会怎么做?我对绑定知之甚少,无法给出答案。

0 投票
1 回答
379 浏览

wpf - 值转换过程中的错误

在为用户可编辑字段创建自定义 IValueConverter 时,Convert 实现通常相当简单。

ConvertBack 实现不是,因为(在没有明确的验证规则的情况下)它必须处理错误的用户输入(例如,在数字输入字段中键入“hi”)。

如果在转换过程中发生错误,似乎没有任何方法可以传达特定错误:

  • ConvertBack 不允许抛出异常(如果是,程序终止)。
  • 返回 ValidationError 不会做任何事情。
  • 返回 DependencyProperty.UnsetValue(文档建议)会导致静默失败(即使您设置了错误模板,也不会向用户显示错误 UI)。
  • 返回未转换的原始值确实会导致显示错误 UI,但带有误导性的错误文本。

有谁知道处理这种事情的更好方法?

(注意:虽然定义自定义 ValidationRule 会起作用,但我认为这不是一个好的答案,因为它基本上必须复制转换逻辑才能发现错误。)

0 投票
2 回答
611 浏览

wpf - ValueConverter 或重新绑定控件的依赖属性?

我在内容模板中有一些文本的自定义控件:

和自定义 IValueConverter CaseConverter - 具有属性 UpperCase。因此,当转换器的 UpperCase 属性设置为 true 时,它​​会在绑定时将文本转换为大写。如果我在标记中更改大写,一切都会好起来的。但是,如果我在运行时更改属性 - 什么也不会发生 - 因为更改转换器属性不会强制我的控件重新绑定。如何在转换器的属性更改上重新绑定使用转换器的控件?

0 投票
2 回答
1968 浏览

wpf - WPF ValueConverter 错误处理的最佳实践是什么?

应该实现两个功能,我想知道我需要对输入进行哪种类型的验证以及如何管理错误。

我需要检查的类型和参数的类型是否符合我的预期。

如果他们不是,我应该什么都不返回并在另一个地方发现错误的行为吗?或者我应该在这里抛出异常或断言?

是否有任何最佳或建议的做法可以在这里应用?

0 投票
2 回答
7574 浏览

wpf - 刷新使用值转换器的绑定

我有一个绑定到对象的 WPF UI。我正在使用 ValueConverter 通过业务规则将属性转换为特定图像:

该元素是一个 TreeView,其中图像位于第二级:

它工作正常,但后来,当对象的状态发生变化时,我想刷新图像并使值转换器重新评估。这怎么可能?

0 投票
5 回答
50400 浏览

wpf - 有没有办法在 XAML 中链接多个值转换器?

我有一种情况,我需要显示一个整数值,绑定到我的数据上下文中的一个属性,经过两次单独的转换后:

  1. 反转一个范围内的值(例如范围是 1 到 100;datacontext 中的值是 90;用户看到的值是 10)
  2. 将数字转换为字符串

我意识到我可以通过创建自己的转换器(实现 IValueConverter)来完成这两个步骤。但是,我已经有了一个单独的值转换器,它只执行第一步,第二步由 Int32Converter 覆盖。

有没有一种方法可以在 XAML中链接这两个现有类,而无需创建另一个聚合它们的类?

如果我需要澄清这些,请告诉我。:)

谢谢。

0 投票
1 回答
4885 浏览

data-binding - Telerik RadGridView 问题

我在我的项目中使用 Telerik RadGridView。我想在列中显示图像。

第一列不是 wokrs,但第二列工作正常。我将转换器用于如下所示的图像

我通过人的 id 缩略图找到并将其设置为 GridViewImageColumn 的数据。我检查了调试器转换器是否正常工作。我无法理解为什么它不起作用。有任何想法吗?

0 投票
3 回答
37869 浏览

c# - 为什么在 MultiBinding 中转换值时会得到 DependencyProperty.UnsetValue?

我有一个非常简单的 IMultiValueConverter,它只是 OR 的两个值。在下面的示例中,我想使用同样简单的布尔逆变器来反转第一个值。

和逆变器:

当我包含 boolInverter 时,MultiValueConverter 中的第一个值变为“DependencyProperty.UnsetValue”。当我不使用转换器时没有问题(当然,除了不是我想要的逻辑)。

我错过了什么吗?单步调试调试器表明 InverseBoolConverter 正确反转了我传递给它的值,但是该值没有被“发送”到 MultiValueConverter。

0 投票
2 回答
14440 浏览

c# - 仅在禁用项目上显示 WPF 工具提示

只是想知道是否可以在禁用的项目上显示 WPF (而不是在启用项目时)。

我想给用户一个工具提示,解释为什么项目当前被禁用。

我有一个IValueConverter反转布尔IsEnabled属性绑定。但在这种情况下似乎不起作用。ToolTip启用和禁用项目时都会显示。

因此可以将ToolTip.IsEnabled属性专门绑定到项目自己的!IsEnabled?

我猜这个问题很简单,但无论如何这里的代码示例:

和绑定:

谢谢各位。