问题标签 [imultivalueconverter]

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 投票
1 回答
1008 浏览

c# - 转换器从 DataGrid 而不是绑定对象获取值?

我正在利用绑定到数据对象的 DataGridTextColumn 来显示应用程序中的各种测量值。我正在尝试实现一个允许以不同单位显示测量值的功能,并认为绑定中的转换器可能是我的最佳选择。

这适用于大多数应用程序,但我在 DataGrid 中有另一个字段,用户可以在其中编辑字段的值。在这种情况下,我有一个双向数据绑定,它将用户输入的值(比如说华氏度)转换回数据对象的默认单位(摄氏度)。

我希望转换器从数据对象中检索摄氏度的值,进行转换,然后将此值(以华氏度为单位)发送到 DataGridTextColumn。但是,在数据对象上设置值并通知 PropertyChanged 后,不会调用该属性的“get”方法。相反,Convert 似乎是从 DataGridTextColumn 获取用户输入的值(以华氏度为单位)。

这是正常行为吗?如果是这样,有没有办法强制 Convert 始终返回数据对象的值?

一些片段可以提供帮助:

转换器方法:

由于 ConvertBack 中可用的信息有限,我在 setter 中进行了“ConvertBack”转换:

编辑:这是一个演示问题的示例项目的链接。左列是用户可编辑的,表示用户查看/编辑的数据。右列显示用户进行更改时实际存储的基础值(此值不应更改)。

如果您修改左列中的值,并在同一行中使用“制表符”或选择不同的列,您可以看到值与您输入的值不同。但是当行失去焦点时它会变回来。通过设置断点,您可以看到当单元格本身失去焦点时,使用 DependencyProperty.UnsetValue 调用 Convert 方法,然后调用 Unit 的 get 方法,然后再次使用 DataGrid 中的值调用 Convert 方法。

温度转换器.zip

0 投票
1 回答
678 浏览

wpf - .NET 3.5 和 .NET 4.5 之间的 MultiBinding 发生了什么?

我们目前正在将项目从 3.5 版转换为 .NET 4.5 版。

我们使用带有多绑定转换器的多绑定设置了一个标记为 IsEnabled 的文本框。每个绑定都有自己的转换器。

在 .NET 3.5 中一切正常,但在 .NET 4.5 中,传递给子转换器的目标类型是 object 类型,而不是 bool。

这是一个已知的问题?MS 重构了多重绑定以不将目标类型传递给子转换器。

我创建了一个演示该问题的简化项目。我在 VS2008 中创建了项目,然后将其转换为 VS2012 和 .NET 4.5。

窗口 XAML:

C#:

0 投票
0 回答
240 浏览

c# - 缺少 IMultiValueConverter 接口?

我只是想知道,但我认为 MS 实现了 IMultiValueConverter... SDK 4.5 已安装

在此处输入图像描述

在此处输入图像描述

我错过了什么?

0 投票
1 回答
261 浏览

c# - IMul​​tiValueConverter将文件路径转换为不同线程中的图标

我正在尝试使用 IMultiValueConverter 在另一个线程中提取图标,即使这在另一个项目中有效,但它在这里不起作用。IsAsync=True 会在没有 FullPath 值的情况下启动转换器,并且 IsAsync=False 会阻止 UI,尤其是在从 .lnk 文件中提取图标时。

您能解释一下原因或提出任何改进方法吗?

编辑: 我创建了一个类扩展图像,现在它看起来像这样:

现在填充列表要好得多,并且每个图标都在提取时出现,但是在较长的 .lnk 提取过程中 UI 仍然被锁定。

0 投票
1 回答
925 浏览

.net - MultiBinding 转换器绑定

MultiBinding转换器的问题
我知道两次发送相同的值没有意义
我这样做是为了隔离那个单一的绑定
在转换器中我收到一个错误转换为bool
值是

{DependencyProperty.UnsetValue}

但是“RWnet”是一个布尔值

如果我发送实际 Multi Binding 的另一半,它可以工作(错误的结果但没有错误)

但这很好
用 RWnet 是一个布尔值

对于 McGarnagle,这是数据上下文

0 投票
1 回答
29 浏览

wpf - 为什么我的转换器在隐藏窗口中被调用?

我有一个Grid带有一些子窗口的窗口。其中一些孩子有MultiBinding一个复杂的转换器。现在,如果我隐藏网格(CollapsedHidden),转换器仍会被调用。为什么?!

当我隐藏一个 UI 元素时,我希望渲染器完全跳过它的可视化树。更具体地说,我希望我的转换器在“隐藏”上下文中运行时不会被调用!想法?

0 投票
2 回答
1021 浏览

c# - 如何将多个值绑定到一个标签?

我已经实现了来自Link的 IMultiValueConverter将多个值绑定到一个标签。

但是,当我引用

在我的 XAML 窗口属性(命名空间 MyApp)中并在 Window 中定义以下内容

我的单独类 ConcatenateFieldsMultiValueConverter 无法识别。

你能想象为什么这个类不能在 Window.Resources 中被识别吗?

0 投票
2 回答
1123 浏览

c# - 在 WPF 中设置行和列列表的背景

问题

我正在使用数据的 xmlprovider 填充数据网格。加载后,我尝试根据“锁定”行和列的列表为“锁定”列和行着色。这里的“锁定”只是对特定行或列的视觉反馈,不用于进一步计算。虽然数据的加载工作正常,但我尝试了不同的解决方案来设置某些行和列的背景属性,方法是使用数据网格扩展中的扩展循环遍历所有单元格,并取得了喜忧参半的效果。

我尝试为 LOADED 事件中的单元格着色,但这显然并不总是有效。并且没有事件说:“您的数据已加载,先生,现在想做点什么”?

所以我为行和列着色的最后手段可能是使用带有 IMultiValueConverter 类的样式设置器。但我不清楚如何将正确的数据发送到转换器。

编码

这就是我现在所拥有的:

XAML:

单元格背景颜色转换器:

概括

  • 如何在 xaml 中正确绑定我的值以使多转换器工作
  • 如果我将 datagridcell 传递给转换器,我可以获得 displaycolIndex 但不能获得 rowIndex,这是如何工作的?
0 投票
2 回答
281 浏览

c# - 如何让 DataGrid 进入转换器

我有这个转换器,它需要:当前的 DataGridCell,一个 DataGridCellInfo 对象,我也试图在其中获取 DataGrid 对象。

尝试如下绑定 DataGrid,但是当它被虚拟化并且向下滚动并且项目被回收时,它会丢弃绑定并引发错误。

System.Windows.Data 警告:4:找不到与引用“ElementName = GenericDataGrid”绑定的源。绑定表达式:路径=;数据项=空;目标元素是'DataGridCell'(名称='');目标属性是“IsTextMatchFocused”(类型“布尔”)

在下面的转换器中,DataGridCell 被转换为 DataGridCellInfo,我基本上是在比较两个 DataGridCellInfo 的行和列索引以查看它们是否匹配,如果匹配则返回 true。

为此,我需要 DataGrid 对象。我可以看到 3 种可能的解决方案:
1. 也许我可以只比较两个 DataGridCellInfo 对象来查看它们是否相同,而不必使用 DataGrid 对象。(我已经尝试过,但它总是返回 false)
2. 从 DataGridCellInfo 对象之一获取实际的 DataGrid,因为它是父对象。(不知道该怎么做)。
3. 让绑定以不同的方式工作。

显然,只要其中一个绑定发生变化,这个转换器就会为多个单元运行,所以我希望它尽可能高效。

0 投票
1 回答
370 浏览

wpf - ImultiValueConverter error while converting from object to double

I'm using ImultiValueConverter and i want to convert two double values from two textboxes to double and multiply them and show the result in the third textbox this is the code in the .cs file

and this is the xaml code here:

BUT I got this message: make sure your method arguments are in the right format

what is the right form to convert the object to double and return this value?!!