问题标签 [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.
c# - IValueCONverter 不工作
几个小时以来一直在谷歌上搜索这个问题,但看不到我哪里出错了。
我有以下转换器,它也只返回 Brushes.Red(尝试过 Colors.Red),但仍然没有运气。
现在在我的 xaml 中,我有以下代码:
我在顶部设置了以下命名空间:
现在我有以下绑定到堆栈面板的类:
数据绑定(值)工作得非常好,但是转换器不想启动,我试图在转换器的 Convert 方法中设置一个断点,但是在调试时不会触发,看起来好像我的调试器没有被调用。
任何人都可以对此有所了解吗?
wpf - 为什么将无操作转换器放在 Binding 上会改变其行为?
我正在测试我构建的用户控件,我遇到了一些对我来说莫名其妙的东西。
该控件是处理特定自定义类型值的 ComboBox 的扩展。它具有该自定义类型的依赖属性,该属性是绑定的目标属性。
我在设置器中有一个跟踪语句,我可以看到该属性正在设置。但它没有出现在我的用户控件中。
现在,通常我会说,好吧,我的用户控件中有一个错误。我可能会,虽然我对此感到困惑。但这个问题不是关于在我的控制中找到错误。继续阅读;这就是奇怪的地方。
我还使用 Bea Stollnitz 的小值转换器来帮助调试绑定:
这背后的想法是我将此转换器添加到我的绑定中,并且可以设置断点以查看将什么值推送到目标。好的,这工作得很好。我可以看到价值被推出。
事实上,它工作得有点太好了。如果 DebuggingConverter 附加到 Binding,则用户控件将显示该值。如果不是,它不会。
这怎么可能呢?什么都不做的值转换器如何影响绑定控件的行为?
编辑:
并不是说它可能会有所帮助,但这是用户控件的 XAML:
在第二个绑定上没有转换器,控件的行为就像我没有设置SelectedCode
. 即使OnSelectedCodePropertyChanged
处理程序中的跟踪语句显示e.Value
确实包含正确的值。无论转换器是否连接,都会发生这种情况。
我一直在尝试通过思想实验对这个问题进行逆向工程:如果你想创建一个绑定的用户控件,如果一个无操作转换器附加到它的绑定,它的行为会发生变化,你会怎么做?我对绑定知之甚少,无法给出答案。
wpf - 值转换过程中的错误
在为用户可编辑字段创建自定义 IValueConverter 时,Convert 实现通常相当简单。
ConvertBack 实现不是,因为(在没有明确的验证规则的情况下)它必须处理错误的用户输入(例如,在数字输入字段中键入“hi”)。
如果在转换过程中发生错误,似乎没有任何方法可以传达特定错误:
- ConvertBack 不允许抛出异常(如果是,程序终止)。
- 返回 ValidationError 不会做任何事情。
- 返回 DependencyProperty.UnsetValue(文档建议)会导致静默失败(即使您设置了错误模板,也不会向用户显示错误 UI)。
- 返回未转换的原始值确实会导致显示错误 UI,但带有误导性的错误文本。
有谁知道处理这种事情的更好方法?
(注意:虽然定义自定义 ValidationRule 会起作用,但我认为这不是一个好的答案,因为它基本上必须复制转换逻辑才能发现错误。)
wpf - ValueConverter 或重新绑定控件的依赖属性?
我在内容模板中有一些文本的自定义控件:
和自定义 IValueConverter CaseConverter - 具有属性 UpperCase。因此,当转换器的 UpperCase 属性设置为 true 时,它会在绑定时将文本转换为大写。如果我在标记中更改大写,一切都会好起来的。但是,如果我在运行时更改属性 - 什么也不会发生 - 因为更改转换器属性不会强制我的控件重新绑定。如何在转换器的属性更改上重新绑定使用转换器的控件?
wpf - WPF ValueConverter 错误处理的最佳实践是什么?
应该实现两个功能,我想知道我需要对输入进行哪种类型的验证以及如何管理错误。
我需要检查值的类型和参数的类型是否符合我的预期。
如果他们不是,我应该什么都不返回并在另一个地方发现错误的行为吗?或者我应该在这里抛出异常或断言?
是否有任何最佳或建议的做法可以在这里应用?
wpf - 刷新使用值转换器的绑定
我有一个绑定到对象的 WPF UI。我正在使用 ValueConverter 通过业务规则将属性转换为特定图像:
该元素是一个 TreeView,其中图像位于第二级:
它工作正常,但后来,当对象的状态发生变化时,我想刷新图像并使值转换器重新评估。这怎么可能?
wpf - 有没有办法在 XAML 中链接多个值转换器?
我有一种情况,我需要显示一个整数值,绑定到我的数据上下文中的一个属性,经过两次单独的转换后:
- 反转一个范围内的值(例如范围是 1 到 100;datacontext 中的值是 90;用户看到的值是 10)
- 将数字转换为字符串
我意识到我可以通过创建自己的转换器(实现 IValueConverter)来完成这两个步骤。但是,我已经有了一个单独的值转换器,它只执行第一步,第二步由 Int32Converter 覆盖。
有没有一种方法可以在 XAML中链接这两个现有类,而无需创建另一个聚合它们的类?
如果我需要澄清这些,请告诉我。:)
谢谢。
data-binding - Telerik RadGridView 问题
我在我的项目中使用 Telerik RadGridView。我想在列中显示图像。
第一列不是 wokrs,但第二列工作正常。我将转换器用于如下所示的图像
我通过人的 id 缩略图找到并将其设置为 GridViewImageColumn 的数据。我检查了调试器转换器是否正常工作。我无法理解为什么它不起作用。有任何想法吗?
c# - 为什么在 MultiBinding 中转换值时会得到 DependencyProperty.UnsetValue?
我有一个非常简单的 IMultiValueConverter,它只是 OR 的两个值。在下面的示例中,我想使用同样简单的布尔逆变器来反转第一个值。
和逆变器:
当我包含 boolInverter 时,MultiValueConverter 中的第一个值变为“DependencyProperty.UnsetValue”。当我不使用转换器时没有问题(当然,除了不是我想要的逻辑)。
我错过了什么吗?单步调试调试器表明 InverseBoolConverter 正确反转了我传递给它的值,但是该值没有被“发送”到 MultiValueConverter。
c# - 仅在禁用项目上显示 WPF 工具提示
只是想知道是否可以仅在禁用的项目上显示 WPF (而不是在启用项目时)。
我想给用户一个工具提示,解释为什么项目当前被禁用。
我有一个IValueConverter
反转布尔IsEnabled
属性绑定。但在这种情况下似乎不起作用。ToolTip
启用和禁用项目时都会显示。
因此可以将ToolTip.IsEnabled
属性专门绑定到项目自己的!IsEnabled
?
我猜这个问题很简单,但无论如何这里的代码示例:
和绑定:
谢谢各位。