问题标签 [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.
wpf - WPF:可以通过 MultiValueConverter 设置 DataGridCell 的内容吗?
我有一个数据网格,它有几个静态和更多动态生成的列。使用多值转换器成功调整了动态添加的列单元格的背景图像。现在我需要向这些单元格添加内容,不仅要更改它们的背景。我希望为此目的使用多值转换器也能正常工作,但事实并非如此。在调试器中 MultiValueConverter 运行,它返回一个字符串,但单元格保持为空。
请查看代码,其中背景设置有效但内容设置无效。它们本质上是相同的代码,除了 gridCellBgConverter 返回 Brush,gridCellContentConverter 返回字符串。
WPF的固有属性是不能通过Style和ValueConverter设置Content吗?你知道如何尝试解决这个问题吗?
提前致谢:费伦茨
解决方案
在 AngelWPF 的帮助下,我能够解决我的问题:
动态创建的列类型是 DataGridTemplateColoumn
样式设置器是:
并在 MultiValueConverter 而不是
我不得不使用
访问原始单元格。我毫不怀疑有更好的方法可以做到这一点,但它似乎有效:)
c# - 实现 IMultiValueConverter 以在单位之间进行转换
我正在开发一个发票系统,并且正在使用一个DataGrid
项目条目。我希望用户能够以不同的单位(例如英寸、英尺、米)输入数量,并将输入的数量转换为商品的库存单位。我的第一个想法是实现一个IMultiValueConverter
,但我从昨天开始就一直在尝试,但无法弄清楚。
我的 Convert 方法确实有效,我实际上已经拿走了身体,将它卡在另一种方法中并测试了它的输出。我的程序在该ConvertBack
方法中崩溃,我是 C# 新手,我从未见过有人真正实现该方法,所以我想知道为什么它强迫我实现它(我猜这是因为我的 Quantity 绑定不是oneway),但我实际上需要转换后的值才能返回到源对象的 Quantity 属性。
我在实现该方法时确实没有问题ConvertBack
,但是传递给该方法的 value 参数是用户输入的值,而不是转换后的值,这是为什么呢?如果不是转换后的值,因此我无法真正弄清楚如何倒退,因为我只能访问用户输入的内容,而不是该方法中所需的单位。
我意识到我对转换器的理解可能还有很长的路要走,但是如果有人可以帮助我了解我的想法在哪里,我将不胜感激,以及针对我的问题的任何潜在解决方法/解决方案。
提前致谢!
页面/PurchaseInvoicePage.xaml
Fx/IMultiValueConverter.cs
c# - IMultiValueConverter 的参数总是相同的吗?
我有一个简单的转换器继承自IMultiValueConverter
它接受 2 个参数(在values
数组中)。
我知道我的转换器是单例的,但尽管ViewModel
包含不同的数据,但我的转换器总是收到相同的ViewModel
实例(第一个绑定参数)和相同的Remarks
文本。
使用此 XAML 可以Remarks
正确显示正确的值。
但是,如果我将Remarks
作为绑定参数传递,那么它使用的参数值与ViewModel
从加载的第一个项目传递的第一个参数值相同。这是 XAML 的样子:
这是我用来注册转换器的 XAML:
深入研究这个问题,传递给的 2 个参数MultiBinding
始终是之前 ViewModel
加载的 2 个值。
如何确保使用当前实例ViewModel
?
wpf - 画布高度和宽度绑定到 xml
过去我创建了一个继承imagebox控件的winform用户控件,用户可以通过用鼠标绘制一个矩形来选择图像的一部分。现在我想对 WPF 做同样的事情。我写了这个 XAML 代码:
数据存储在 xml 文档中。图像比画布大,所以它必须均匀拉伸,以适应画布的最大尺寸,我希望画布调整为图像缩放显示的大小,所以图像填充了 100% 的画布没有边距。当我有这个时,鼠标移动/进入/退出事件将仅设置为图像边框。
问题是画布高度绑定值,这会导致图像不显示,尽管它的 beec 定义与画布宽度相同,并且转换器返回正确值。当我将高度设置为精确值而不是绑定值时,例如 Height="240",它可以工作。
谢谢!
wpf - 具有属性的两路多路转换器或转换器
我需要将一个两部分的值转换为一个字符串,然后再转换回来,例如:
转换为
使用多值转换器从源转换非常简单,但如果用户未在字符串中提供单位类型,则无法转换回来,因此多值转换器看起来不像我需要的解决方案。
直接转换器参数不起作用,因为需要绑定单元类型,所以我研究了如何创建可绑定参数。创建一个可绑定的参数实际上很容易——从 DependencyObject 派生——但是你的转换器没有存在于可视化树中的问题——因此无法绑定到任何东西——有两种解决方案:
http://tomlev2.wordpress.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/ http://shujaatsiddiqi.blogspot.com/ 2011/02/wpf-binding-converter-parameter.html
第一种方法从 Freezable 而不是 DependencyObject 派生转换器以允许 DependencyProperties。这有效并允许您在 Whatre.Resources 部分中进行绑定,但它具有非常奇怪的行为,例如仅在第一次在整个应用程序中使用绑定时才监听绑定。
第二种方法似乎根本不起作用。当源更改时,依赖属性永远不会更新。
有谁知道这个问题的解决方案,或者这是 WPF 的一个很大的限制?
binding - 在 Silverlight 中将转换器绑定到 MultiBinding
Converter
博客文章代码中的属性Silverlight MultiBinding solution for Silverlight 4不是依赖属性,因此我无法将它与转换器绑定(出于技术原因,必须在应用程序早期将其实例化为 Unity 注入的一部分而不是作为用户控件的一部分的简单静态资源)。
如何修改MultiBinding
代码以接受绑定转换器?我试图使它成为一个依赖属性:
但我得到了
DependencyProperty System.Windows.Data.IMultiValueConverter。不能在 ...Binding.MultiBinding 类型的对象上设置转换器。
如果这不是一个可行的选择,我该如何绑定ConverterParameter
属性或获取一些东西来模拟转换器到 a 的绑定MultiBinding
?
wpf - WPF 是否有一组可用的默认绑定转换器?
在创建 WPF 用户控件时,我经常发现自己在绑定值时创建了小型转换器类。
通常你需要做类似的转换,这让我想知道我是否会错过一些现有的可用实现。
- .NET 库是否包含
IValueConverter
or的任何实现IMultiValueConverter
? - 有没有尝试创建一个可重用的值转换器库?
c# - 如何将多个文本框转换为一个值
在我的 WPF 应用程序中,用户输入 GPS 坐标,格式为度:分:秒,作为分钟的小数部分。
因此 60° 30' 45" 将输入为 60° 30.750' 。
然后我将其存储为纯十进制数,因此上述示例将存储为 60.5125。
这个想法是这样用户就不会弄乱输入,它将被设置在 3 个不同的文本框中。一种用于度数,另一种用于分钟,一种用于小数秒。将其中一个数字分成两个文本框有点糟糕,但如果他们必须在其中输入整数,则担心所有点或逗号混淆,并且可能会搞砸。
所以我认为可能有用的一件事是 IMultiValueConverter 但它似乎只适用于 MultiBindings 这是我在这里没有做的事情。
目前我的解决方案是绑定到不同的属性并在后面的代码中进行所有计算,但我对小数位并不满意。我假设 3 个小数字母,但如果他们只输入 7 并假设 0.700 但得到 0.007,所以我想我必须做一个字符串格式位。
有没有更好的解决方案。我可以将 MultiValueConverter 用于这样的事情吗?
.net - WPF的Binding引擎在转换值时有哪些特殊值?
我已经知道可以从 IValueConverter 实现返回的Binding.DoNothing以表示不应发生其他操作。
但是,我找不到参考或文档很好地总结了其他特殊值是什么 - 例如返回后备值。这些是什么?
wpf - MultiValueConverter 的结果可以自己转换吗?
我的 WPF 应用程序中有一个表单,我必须添加一个编辑按钮。现在,表单始终处于编辑模式,没有“查看模式”。但是,由于各种原因,我需要将控件保持在视图模式,直到用户单击编辑按钮,然后隐藏编辑按钮并在其位置显示一个保存按钮。
我的表单已经有一个DependencyProperty
名为的布尔值CanModify
,当用户的权限授予他们编辑表单中显示的记录的权利时,这是真的。我正在添加一个DependencyProperty
名为的新布尔值InEditMode
,默认为 false。隐藏和启用按钮非常简单,但是ComboBox
如果用户无法编辑记录,或者如果他们可以编辑并且表单处于查看模式,我想隐藏这个控件。为此,我需要将两个布尔属性的 AND 运算结果一起转换,然后将其转换为一个Visibility
值。
我已经有了一个实现IValueConverter
bool 并将其转换为Visibility
. 我刚刚编写了一个实现的类,该类IMultiConverter
接受一个布尔数组并将它们与运算一起(或对它们进行运算,具体取决于参数的值)。
我想做的是获取结果IMultiConverter
并通过IValueConverter
将结果转换为Visibility
. 我可以这样做吗?或者我最好在新的代码中执行 AND DependencyProperty
?
托尼