问题标签 [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.
c# - 如何将第二个绑定值传递给用于 Convert 和 ConvertBack 的 ValueConverter?
我们有一个独特的案例,我们需要在 DataGrid 列中显示自定义类型的值。自定义类型可以是以下三个值之一:数字、模拟和串行。
- 数字代表模型中的“0”或“1”
- 类似物是 '0' 和 '255' 之间的整数
- 序列只是字符串
对于类比或序列,我们只想在 DataGrid 的列中按原样显示值,对于这些类型,值是可编辑的,但对于在模型中存储为“0”和“1”的数字,我们想要将它们显示为字符串 'True' 或 'False' 并且它们不可编辑。
Convert
下面是我们在方法中需要的逻辑示例:
然后我们需要相反的ConvertBack
方法。
我们遇到的问题是传递valueType
给转换器以在Convert
和ConvertBack
方法中使用。您不能Parameter
用于此,因为您无法在 Parameter 上设置绑定。同样,您不能简单地使用 a MultiValueConverter
,因为ConvertBack
没有传递该值,而是希望您返回它。
那么如何将 ValueType 传递给转换器的 Convert 和 ConvertBack 方法呢?
我倾向于在转换器上公开一个新属性并绑定到该属性,但我不确定在解析转换器时该绑定是否只评估一次。
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 的点?
wpf - 是否可以使用多值转换器?
所以,.NET 有一个内置的BooleanToVisibilityConverter
,当我有一个布尔值来转换为可见性时,这非常好。但是当我有多个条件来控制可见性时,我创建了自己的AndConverter
和OrConverter
类。它们实现了 IMultiValueConverter,因此它们可以接收多个布尔值来对它们执行and
oror
操作以输出单个布尔值。
问题是我需要某种方式将输出从我的AndConverter
或OrConverter
到的“管道”,BooleanToVisibilityConverter
但我不明白这是怎么可能的。我是否必须创建采用多个布尔值并输出 a 的新转换器Visibility
?我希望不是这样,因为我还需要将结果转换为 a string
,将来可能还有其他东西。如果能够将一个转换器的输出通过管道传输到另一个转换器,而不必创建新的转换器来处理所有可能的情况,那就太好了。
c# - 无法在 WPF MultiValueConverter 中转换对象
我正在努力学习MultiBinding
。我尝试将两个值(一个double
和一个boolean
)从 viewmodel 传递给转换器并返回string
结果。
XAML
转换器
视图模型
在转换器中我会得到一个异常Unable to cast object of type 'MS.Internal.NamedObject' to type 'System.IConvertible
。
这是什么意思?我是否执行MultiBinding
不正确?
编辑:
ViewModel 看起来像这样
模型如下所示:
c# - 如何通过 WPF DataTrigger 在多值转换器中传递多个参数
我有四个int
Property ProOne
,ProTwo
和ProThree
ProFour
我必须((ProOne == ProTwo) || (ProThree == ProFour))
在多值转换器中实现布尔逻辑,即VisibilityCheckConverter
。基于逻辑,多值转换器VisibilityCheckConverter
返回True
或False
。
现在我需要通过 DataTrigger 将这四个属性传递给 Converter,根据值,我必须将 Buttons Visibility 更改为 Visible
如何使用具有多个参数的 Multivalue Converter 编写 DataTrigger?
XAML 代码示例:
c# - IMultiValueConverter 从 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 的情况下直接绑定它?
c# - 在 GridViewColumn.CellTemplate 的 StackPanel 中多重绑定 TextBlock 并且文本不显示
我有一个带有 Gridview 的 ListView,对于许多列,我需要有两行数据。顶部的单独具有项目数量,底部具有该数量乘以数量。我可以让最高金额显示得很好,但最低金额没有显示。我在后端部分放置了中断,以确保提取了正确的数量并返回了正确的数字,但是当我运行程序时它没有显示出来。
这是后面的cs文件
这是一个包含一些数据的 xml 文件
提前致谢,如果您需要更多信息来帮助我,请告诉我。
c# - 使用 MultiBinding 计算多个文本框的总和
基于这个先前回答的问题,我正在尝试创建一个IMultiValueConverter
允许 WPF 中 TextBox 的 Text 属性绑定到其他几个 TextBox 值的总和。我已经相当严格地反映了引用问题的答案,但是在测试时我得到了一个InvalidCastException
. 在下面的代码中,注释掉的行是上述答案中的代码。我确实尝试使用var
数据类型而不是使用double
(我不喜欢var
,只是一个偏好)来运行它,并且在同一个地方收到了同样的错误。我尝试以各种方式更改演员表的风格,包括Convert.ToInt32
, (int)
, 甚至int.Parse
, 但一切都会导致相同的错误和相同的位置。
有人知道这可能是什么问题吗?这是我第一次真正尝试这样的绑定,所以这可能是我从根本上误解了它,但老实说,不要认为它是这样的......
目标文本框:
源文本框:
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 从集合中更新时调用。
谢谢!
c# - 无法使用多重绑定绑定 DataGrid ItemsSource - 简单绑定可以正常工作
我面临一个奇怪的问题。我有一个DataGrid
我想绑定ItemsSource
的MultiBinding
原因。虽然使用简单绑定到 aDataTable
效果很好,但我无法让它与多重绑定一起使用。
简单地说:下面的标记工作并呈现数据表
...虽然这并不真正起作用 - 什么也不渲染
请注意,CollectionToDataTableConverter
实现IValueConverter
和IMultiValueConverter
并简单地传递值
当然,该Mock.Value
属性存在于视图模型上,并且是一个简单的DataTable
. 此外,调试证明在这两种情况下转换器都返回了正确的值。
你知道这是怎么回事吗?
谢谢!