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

c# - 如何绑定到文本框背景颜色

我有一个文本框供用户输入 6 个字符的十六进制颜色值、一个验证器和一个附加到它的转换器。到这里为止,一切正常。但我想将文本框的Background颜色绑定到文本框(ElementNames Background& Foreground)指定的颜色,它似乎不起作用。

当我调试/单步执行代码时,该值似乎总是""

XAML

转换器

0 投票
2 回答
835 浏览

c# - WPF 转换器从 Binding 获得奇怪的值

我有如下设置绑定

XAML

C#:显示是Color什么

转换器

但我的转换器越来越value

我希望它System.Windows.Media.Color是我为什么得到这个?

基本上,我有 3 个用于 HSL 值的 Silders 绑定到DependencyProperties,每个都有一个PropertyChangedCallback附加到它们

看起来像

基本上它的目的是更新绑定到依赖属性的控件Color。这个想法是get应该为Color从 HSL 属性创建新颜色的属性运行。问题似乎是即使我更改 HSL 值,get 也不会运行。

更新

所以我试图value在出现异常的情况下返回,我在文本框中什么都没有,所以我一直value.toString()都有Color [Empty]。我做错了什么?

0 投票
2 回答
5565 浏览

wpf - 具有 ValueConverter 和自定义属性的类型组合框

我正在使用 MVVM,以防万一。

我的MainWindowViewModel有两个 DependencyProperties,TheListTheSelectedItemTheListList<Type>TheSelectedItemType

MainWindow 有一个ComboBox。当MainWindowViewModel加载时,它会获取程序集中实现 IMyInterface 的所有类的列表,并将TheList设置为此。

这些类中的每一个都应用了一个名为DisplayName的自定义属性,该属性有一个参数,用于显示类的用户友好名称,而不是应用程序知道的类名称。

我还有一个ValueConverter用于将这些类型转换为显示名称的明确目的。

因此,我最终得到的是一个ComboBox,其中包含用户应该能够理解的名称列表。惊人的!这正是我想要的!

下一步:我将ComboBox的 SelectedItem 属性绑定到ViewModel 中的TheSelectedItem属性。

这就是问题所在:当我进行选择时,我的 ComboBox 周围出现了一个小红框,并且我的 ViewModel 上的TheSelectedItem属性永远不会被设置。

我很确定这是因为类型不匹配( ComboBox 中的项目现在似乎是字符串,并且TheSelectedItem的类型是Type ——而且,当我将TheSelectedItem更改为string而不是Type时,它​​可以工作)。但我不知道我需要从哪里开始编码以将 ComboBox 中的(希望是唯一的)DisplayName 转换回 Type 对象。

提前感谢您的帮助。我对这个很困惑。

0 投票
2 回答
13947 浏览

c# - Silverlight中的动态图像源绑定

我想根据它DataContext在 a中设置图像的来源ChildWindow。这是 XAML 文件:

如果我覆盖的Show方法ChildWindow并设置图像的源,它工作正常:

但它看起来很丑,而且不是“银光方式”,所以我决定改变:

你看我有一个DialogIconConverter注册来绑定来自DataContext.

但它现在不工作了,我在这个控件中有几个其他的转换器工作正常。只有这个不工作。你能帮忙找出问题所在吗?

编辑:DialogIconType是一个枚举,也是DialogContext. 的实例DialogContext将分配给 的DataContext属性DialogWindow

0 投票
3 回答
16427 浏览

wpf - 将 ObservableCollection<> 绑定到 TextBox

我有从 Web 服务返回的数据,ObservableCollection<string>我想将集合绑定到只读,TextBox以便用户可以选择数据并将其复制到剪贴板。

要将集合绑定到我创建的 TextBox 的 Text 属性,该属性IValueConverter会将集合转换为文本字符串。这似乎有效,只是它只有效一次,就好像绑定无法识别对 Observable 集合的后续更改。这是一个重现问题的简单应用程序,只是为了确认绑定正常工作,我还绑定到“ListBox”

这是因为 Text binding simple 不处理集合的更改事件吗?

一种选择当然是让我处理集合更改并将这些更改传播到 TextBox 绑定到的 Text 属性,这很好,但我想了解为什么在我看来是一个明显的解决方案不起作用正如预期的那样。

XAML

代码背后

0 投票
3 回答
8333 浏览

wpf - 在双向绑定中将 IValueConverter 与当前 DataContext 一起使用

我在使用转换器在字符串和我们的时间格式之间进行转换时遇到问题。转换器本身工作正常,并像这样实现:

使用转换器的 XAML 将转换器本身包含在 usercontrol.resources 中,如下所示:

如果遇到该属性(我在后台使用 wpf 工具包中的数据网格),则使用用于编辑 simpletime 的数据模板:

我遇到的问题是转换器需要在绑定中指定路径,如果它是双向转换器(并且我需要双向转换器),但我要设置的属性已经是当前的 DataContext - 什么路径那我可以指定吗?

我能想到的唯一解决方法是在 SimpleTime 中引入一个虚拟属性,它只获取当前的 SimpleTime 或设置它。

并通过绑定到那个

这工作正常,但不是一个真正合适的解决方案,特别是如果我需要转换器更多次......

任何帮助表示赞赏干杯,曼尼

0 投票
2 回答
3336 浏览

.net - IValueConverter - 在 Convert 方法中获取源对象

有没有办法在 Converter 类的 Convert 方法中获取源对象。我知道如何获取转换后的属性,但是否可以获取该属性所属的对象?

0 投票
2 回答
901 浏览

c# - WPF - 在窗口背景中将颜色数据绑定到简单的窗口或画布 - 无控件

我需要一个答案,以便我可以探索。我在这里遇到了一堵砖墙:

我想使用:

每次重新计算“颜色”时,我希望窗口或窗口中的画布立即改变颜色......所以我可以看到冷色的变化。为什么这么难?我需要看看这个,但我碰壁了。我在这里复制了一个类型转换器:

感谢您的任何帮助!

0 投票
1 回答
504 浏览

mvvm - MVVM:使用强类型 DataContext 绑定转换器

我非常需要一个想法;

这是困扰我的:

我有一个视图,名为“DropDownView”这是我使用它的方式:

意思是,在父页面 ViewModel 中,我有一个类型的属性:StronglyTypedViewModel<T>

现在,当视图出现时,这一切都按我的预期完美运行;

但是, DropDownView 中的这几行具有令人不安的行为:

使用 SelectedItem Converter 属性集,我得到运行时异常:绑定错误...没有它,我可以看到按预期填充的下拉值(自定义 ItemTemplate 已绑定),但是显示为object.ToString()

我有强类型的 ViewModel,这意味着我应该有强类型的 Converter,它在 ViewModel 中声明为:

但是,由于我在编译时不知道 ViewModel 的类型,所以我无法为 ViewModel 添加一个可以用于转换器的 StaticResource ...

任何帮助表示赞赏...谢谢

@devdigital

IE

我还不知道如何创建转换器,所以仍在进行中...

如果您需要更多详细信息,请告诉我,或者我可以通过邮件发送一些小演示......非常感谢您的兴趣......

0 投票
2 回答
3922 浏览

wpf - 在 WPF 中填充数字显示

我有一个非常简单的位置读数——它只是一个应用了 Style 的 TextBlock。在那个 Style 中,我只是这样设置(属性比这还多,但为了简洁起见,我把它们去掉了):

现在,我有一个使用这种样式的显示器,它将显示一个从 0.0 到 30000.0 的数字。问题是,由于我将文本居中,所以数字(如果变化很快)会到处乱跳,这有点令人不安。我想格式化我的字符串,这样它就不会这样做。

我在 XAML 中尝试了这个 ConverterParameter:

虽然它可以正确填充,但我会得到像 00032.5 这样的数字。然后我用 替换了0#但最终的行为就像{0:0.0}. 我查看了MSDN 文档,没有看到任何其他有用的信息。

我唯一能想到的是我必须编写一个新的 IValueConverter 来做到这一点。换句话说,在 Convert() 方法中,我必须将其parameter解析为我自己的特殊字符。然后当我检测到这一点时,用空格替换缺失的数字。

但是,我真正想在这里学习的是,这可以通过简单地在格式字符串中使用我不知道的不同字符来完成吗?