问题标签 [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 回答
2557 浏览

wpf - WPF ValueConverter 绑定 - 出了点问题

假设您有一个用户选择列表。根据用户所做的选择,其他选择可能不再可用。

我有一个 ValueConverter 可以处理这个问题。如果它知道进行了哪些选择,它将返回一个值,指示正在转换的项目是否仍然可选择。

问题是知道用户选择的唯一地方是在这个屏幕的 ViewModel 中。没问题,我虽然。我将使转换器成为 ViewModel 上的属性,并在转换器的构造函数中传递对 ViewModel 的引用,以便转换器可以随时检查所选项目的列表。

我现在遇到的问题是它似乎实际上并没有执行任何转换。

归结为:ViewModel 有一个名为 MySelectionConverter 的 IValueConverter 类型的属性。ViewModel 有一个选定项目的列表。在视图(继承自 UserControl 的 MyScreen 类型)中,有一个包含项目的列表框。

ItemTemplate 看起来像这样:

我怀疑我的绑定有问题。但也许你根本无法做到这一点。任何帮助表示赞赏。

编辑: 根据我到目前为止获得的信息,我的绑定不正确。但事实证明,我不能做我想做的事。本质上,我试图通过 Binding 使用以下方法设置转换器:

视觉工作室告诉我:

不能在“Binding”类型的“Converter”属性上设置“Binding”。只能在 DependencyObject 的 DependencyProperty 上设置“绑定”。

所以,现在我想问题变成了:我可以通过什么方式解决这个问题?我需要一个转换器来了解将要使用的屏幕的 ViewModel 的状态。

0 投票
3 回答
1891 浏览

silverlight - Silverlight:如何在更改实体中的值时更新 IValueConverter 绑定的文本框?

所以,我有一个带有 TextBlock 的 DataGrid,它显示网格中两个文本框的聚合值。我通过使用值转换器绑定来做到这一点。这适用于负载,但我需要它在更改其聚合的其他实体的值时进行更新。这是我的一些代码:

这是绑定到视图的 ViewModel 中的我的 PagedCollectionView。

这是我视图中的 DataGrid:

这是聚合文本块的值转换器:

因此,在更改其他 2 个文本框中的值时,我需要它来刷新文本块中的聚合值。我怎样才能做到这一点?我现在不知所措,浏览网页我找不到任何解决方案。

非常感谢,埃文

0 投票
3 回答
20981 浏览

.net - Source=null 的 ImageSourceConverter 错误

我将 Image 的 Source 属性绑定到一个字符串。此字符串可能为空,在这种情况下我不想显示图像。但是,我在调试输出中得到以下信息:

System.Windows.Data 错误:23:无法使用默认转换将“<null>”从类型“<null>”转换为“en-AU”文化类型的“System.Windows.Media.ImageSource”;考虑使用 Binding 的 Converter 属性。NotSupportedException:'System.NotSupportedException: ImageSourceConverter 无法从 (null) 转换。在 System.ComponentModel.TypeConverter.GetConvertFromException(对象值)在 System.Windows.Media.ImageSourceConverter.ConvertFrom(ITypeDescriptorContext 上下文,CultureInfo 文化,对象值)在 MS.Internal.Data.DefaultValueConverter.ConvertHelper(对象 o,类型 destinationType,DependencyObject targetElement, CultureInfo 文化, 布尔 isForward)'

我宁愿不显示它,因为它只是噪音 - 有什么方法可以抑制它?

0 投票
1 回答
9829 浏览

c# - 什么时候调用 ConvertBack 方法?

我知道当数据即将显示时,Convert()调用方法来转换数据并显示转换后的数据。

我想知道什么时候ConvertBack()调用方法?它的目的是什么?

我有一个绑定到某个集合DataGrid的对象,并且我已经实现了集合中项目的一个属性。当我制作(在DataGrid中)时,如果我双击单元格(已实现)然后更改焦点,则会调用方法。但是当我 make 时,永远不会调用方法,无论我如何处理 the及其单元格。ItemSourceIValueConverterIsReadOnly="True"ConvertBackIValueConverterIsReadOnly="False"ConvertBackDataGrid

请解释DataGrid细胞的这种行为和ConvertBack方法IValueConverter

0 投票
3 回答
245 浏览

wpf - 将一个值转换为多个属性

我正在使用以下数据模板:

当 DataContext 的属性发生更改时,我想将以下代码应用于该行:

请注意,代码需要访问其他两个元素的大小

添加代码的最佳方法是什么?在这里使用值转换器似乎不合适,因为我需要将一个属性转换为四个

0 投票
2 回答
2312 浏览

wpf - 如何根据用户请求调用 IValueConverter?[XamDataGrid 记录索引]

我想在我的 XamDataGrid 控件中添加像 MS Excel 这样的记录索引。我将这个技巧与 IValueConverter 一起使用。我定义了一些模板来显示这个 XAML 代码的记录索引宽度:

RowNumberConverter 定义为:

当我在我的 XamDataGrid 实例中添加记录时,这非常有效,但是当我按数据网格中的任何字段对数据进行排序时,记录索引也会排序(当我按下排序按钮时,值转换器不会调用)。也许我可以手动调用它?

感谢您的任何建议,并为我糟糕的英语感到抱歉。

0 投票
1 回答
58 浏览

binary - 将来自绑定源的数字显示为二进制

我需要将数字显示为二进制字符串(例如 8 => 1000)。当然,我可以使用 BitConverter 对其进行转换,并在代码隐藏文件中自行设置我的 TextBox 的文本。但这看起来有些难看。是否可以将 TextBox 绑定到某个源并自动转换它?

0 投票
2 回答
1686 浏览

wpf - 将转换后的 Enum 绑定到 ComboBox

我试图将以下 Enum 绑定到 ComboBox

我无法更改 Enum 本身,但我不想显示这些字符串。我的意图只是删除前缀“Action”并在 ComboBox 中显示“Read”、“Write”和“Verify”。因此我写了一个 ValueConverter

我的 XAML 看起来像

[...]

[...]
要么:

或者:

我的问题是所选项目的绑定。它失败了,但我不知道为什么。

0 投票
1 回答
286 浏览

wpf - 使用 IValueConverter 时 Visual Studio 崩溃

我有一个实现 IValueConverter 的类。每次我构建解决方案时,Visual Studio 都会在构建成功后立即崩溃。

Visual Studio 问题详情:

问题签名:问题事件名称:APPCRASH 应用程序名称:devenv.exe 应用程序版本:10.0.30319.1 应用程序时间戳:4ba1fab3 故障模块名称:clr.dll 故障模块版本:4.0.30319.1 故障模块时间戳:4ba1d9ef 异常代码:c00000fd 异常偏移量: 000018d7 操作系统版本:6.1.7600.2.0.0.256.48
区域设置 ID:1033

离线声明:
C:\Windows\system32\en-US\erofflps.txt

然后我必须从项目中删除整个类,以防止 Visual Studio 崩溃。

0 投票
1 回答
509 浏览

wpf - 使用 WPF 转换器将 xpath 节点存在转换为可见/隐藏/折叠

我已经成功地使用转换器将 WPF 中的布尔值转换为适当的属性,例如 Hidden/Collapsed/Visible 用于隐藏和显示控件。

我想使用 xpath 节点的存在来实现相同的目标 - 您在 XSLT 中测试的那种路径,例如:

<xsl:if test="/SomeNode/Exists"></xsl:if>

如果节点存在,我希望转换器输出“可见”,如果不是“隐藏”或“折叠”。

有人有想法么?