问题标签 [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 投票
2 回答
65 浏览

c# - 如何将第二个绑定值传递给用于 Convert 和 ConvertBack 的 ValueConverter?

我们有一个独特的案例,我们需要在 DataGrid 列中显示自定义类型的值。自定义类型可以是以下三个值之一:数字、模拟和串行。

  • 数字代表模型中的“0”或“1”
  • 类似物是 '0' 和 '255' 之间的整数
  • 序列只是字符串

对于类比或序列,我们只想在 DataGrid 的列中按原样显示值,对于这些类型,值是可编辑的,但对于在模型中存储为“0”和“1”的数字,我们想要将它们显示为字符串 'True' 或 'False' 并且它们不可编辑。

Convert下面是我们在方法中需要的逻辑示例:

然后我们需要相反的ConvertBack方法。

我们遇到的问题是传递valueType给转换器以在ConvertConvertBack方法中使用。您不能Parameter用于此,因为您无法在 Parameter 上设置绑定。同样,您不能简单地使用 a MultiValueConverter,因为ConvertBack没有传递该值,而是希望您返回它。

那么如何将 ValueType 传递给转换器的 Convert 和 ConvertBack 方法呢?

我倾向于在转换器上公开一个新属性并绑定到该属性,但我不确定在解析转换器时该绑定是否只评估一次。

0 投票
1 回答
625 浏览

c# - 使用 MultiValueConverter 在 WPF 中的画布上更新弧段点

所以我正在做一个任务,我们应该在 C# 和 WPF 中制作一个 Mii Maker,我已经完成了所有工作,但是我们应该使用尽可能少的代码,并使用绑定反而。我已经为其他一些部分创建了一个 ValueConverter,它们工作得很好,但是当我尝试使用 MultiBind 更新 ArcSegment 的点时(我需要一些值来保持一切居中),该点保持静止。

这是没有多重绑定的工作代码:

XAML:

C#:

我想删除该方法并将其提取到 MultiValueConverter (或两个,因为弧有两个点),并直接更新 Point 而不是使用 value_Changed 方法,如下所示:

XAML:

C#多值转换器:

有人知道怎么做吗?当我打印出 MultiBind 接收到的值时,一切都是正确的,并且我尝试返回 new Point() 和格式化的字符串,但似乎没有任何效果。

更多信息:没有构建错误,我在 Window.Resources 标记中有 MultiValueConverter,传递到 multibind 的所有值都来自滑块,当我使用多重绑定的相同 xaml 代码(像这样):

我是否需要保留工作代码并对其进行处理,或者有没有办法使用 MultiBind 更新 ArcSegment 的点?

0 投票
1 回答
1170 浏览

wpf - 是否可以使用多值转换器?

所以,.NET 有一个内置的BooleanToVisibilityConverter,当我有一个布尔值来转换为可见性时,这非常好。但是当我有多个条件来控制可见性时,我创建了自己的AndConverterOrConverter类。它们实现了 IMultiValueConverter,因此它们可以接收多个布尔值来对它们执行andoror操作以输出单个布尔值。

问题是我需要某种方式将输出从我的AndConverterOrConverter到的“管道”,BooleanToVisibilityConverter但我不明白这是怎么可能的。我是否必须创建采用多个布尔值并输出 a 的新转换器Visibility?我希望不是这样,因为我还需要将结果转换为 a string,将来可能还有其他东西。如果能够将一个转换器的输出通过管道传输到另一个转换器,而不必创建新的转换器来处理所有可能的情况,那就太好了。

0 投票
1 回答
1040 浏览

c# - 无法在 WPF MultiValueConverter 中转换对象

我正在努力学习MultiBinding。我尝试将两个值(一个double和一个boolean)从 viewmodel 传递给转换器并返回string结果。

XAML

转换器

视图模型

在转换器中我会得到一个异常Unable to cast object of type 'MS.Internal.NamedObject' to type 'System.IConvertible

这是什么意思?我是否执行MultiBinding不正确?

编辑:

ViewModel 看起来像这样

模型如下所示:

0 投票
1 回答
10407 浏览

c# - 如何通过 WPF DataTrigger 在多值转换器中传递多个参数

我有四个intProperty ProOne,ProTwoProThreeProFour

我必须((ProOne == ProTwo) || (ProThree == ProFour))在多值转换器中实现布尔逻辑,即VisibilityCheckConverter。基于逻辑,多值转换器VisibilityCheckConverter返回TrueFalse

现在我需要通过 DataTrigger 将这四个属性传递给 Converter,根据值,我必须将 Buttons Visibility 更改为 Visible

如何使用具有多个参数的 Multivalue Converter 编写 DataTrigger

XAML 代码示例:

0 投票
1 回答
429 浏览

c# - IMul​​tiValueConverter 从 MainWindow 通过 UserControl 绑定到 UIElement

项目类型: .NET 4.0 WPF 桌面应用程序

问候。

我目前正在研究一种解决方案,以在 WPF 应用程序中利用 IMultiValueConverters 将SelectedItem两个 ComboBoxes 的IsEnabled属性绑定到按钮的属性。组合框被放置在单独的用户控件中,这些用户控件与按钮本身一起嵌套在主窗口中。

可视化布局

主窗口.xaml

ucDatabaseSelection.xaml

MultiNullToBoolConverter.cs

只有当两个 ComboBox的属性都不为空IsEnabled时,Button 的属性才应为 true 。SelectedItem

我现在遇到的问题是我无法让绑定从 MainWindow 按钮通过 UserControls 工作到 ComboBoxes 上。我在这里错过了 UpdateTriggers 还是根本不可能在不使用 UserControl 类中的 DependencyProperties 的情况下直接绑定它?

0 投票
1 回答
234 浏览

c# - 在 GridViewColumn.CellTemplate 的 StackPanel 中多重绑定 TextBlock 并且文本不显示

我有一个带有 Gridview 的 ListView,对于许多列,我需要有两行数据。顶部的单独具有项目数量,底部具有该数量乘以数量。我可以让最高金额显示得很好,但最低金额没有显示。我在后端部分放置了中断,以确保提取了正确的数量并返回了正确的数字,但是当我运行程序时它没有显示出来。

这是后面的cs文件

这是一个包含一些数据的 xml 文件

提前致谢,如果您需要更多信息来帮助我,请告诉我。

0 投票
1 回答
1520 浏览

c# - 使用 MultiBinding 计算多个文本框的总和

基于这个先前回答的问题,我正在尝试创建一个IMultiValueConverter允许 WPF 中 TextBox 的 Text 属性绑定到其他几个 TextBox 值的总和。我已经相当严格地反映了引用问题的答案,但是在测试时我得到了一个InvalidCastException. 在下面的代码中,注释掉的行是上述答案中的代码。我确实尝试使用var数据类型而不是使用double(我不喜欢var,只是一个偏好)来运行它,并且在同一个地方收到了同样的错误。我尝试以各种方式更改演员表的风格,包括Convert.ToInt32, (int), 甚至int.Parse, 但一切都会导致相同的错误和相同的位置。

有人知道这可能是什么问题吗?这是我第一次真正尝试这样的绑定,所以这可能是我从根本上误解了它,但老实说,不要认为它是这样的......

目标文本框:

源文本框:

0 投票
1 回答
1096 浏览

c# - WPF Multibinding:来自 TextBox 的 OneWayToSource 绑定通过另一个绑定更新不起作用?

我有一个绑定到 People 集合的 DataGrid。我还有一个 TextBox 应该接受来自所选行的 Name 值。然后,用户可以编辑该值或保持原样。关键点是:TextBox 中显示的文本无论是来自集合还是用户输入,都必须传播到属性 NewName。

我为 NewNameTextBox 设置了两个绑定:OneWay'ed 到 DataGrid 后面的 CollectionView,OneWayToSource'ed 到属性:

我想当用户更改 DataGrid 中的选择时应该更新该属性,但这不会发生。TextBox 得到更新并显示选定的 Name 值,但通过 OneWayToSource 绑定的属性保持不变。

如果用户在 TextBox 中键入内容,则该属性会按预期更新。

所以问题是如何通过多绑定 TextBox 从两个源更新属性,而无需代码隐藏视图?

这是窗口后面的代码:

转换器的方法 ConvertBack() 仅在用户键入时调用,而不是在 TextBox.Text 从集合中更新时调用。

谢谢!

0 投票
1 回答
1097 浏览

c# - 无法使用多重绑定绑定 DataGrid ItemsSource - 简单绑定可以正常工作

我面临一个奇怪的问题。我有一个DataGrid我想绑定ItemsSourceMultiBinding原因。虽然使用简单绑定到 aDataTable效果很好,但我无法让它与多重绑定一起使用。

简单地说:下面的标记工作并呈现数据表

...虽然这并不真正起作用 - 什么也不渲染

请注意,CollectionToDataTableConverter实现IValueConverterIMultiValueConverter并简单地传递值

当然,该Mock.Value属性存在于视图模型上,并且是一个简单的DataTable. 此外,调试证明在这两种情况下转换器都返回了正确的值。

你知道这是怎么回事吗?

谢谢!