问题标签 [valueconverter]

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 投票
3 回答
5502 浏览

c# - 带有值转换器的动态数据模板

我想在 wpftoolkit 数据网格中显示数据,其中数据是

其中候选人列表中的候选人数量可在运行时配置。

所需的网格布局如下所示

Foo | Bar | Candidate 1 | Candidate 2 | ... | Candidate N

因此,我似乎无法为 xaml 中的候选人创建 DataTemplate,因为绑定表达式会发生变化。

我在 AutoGeneratedColumns 事件中添加必要的列,如下所示:

但是,这会失败并出现以下异常:XML 命名空间“clr-namespace:WpfToolkitDataGridTester;assembly=WpfToolkitDataGridTester”中不存在标记“FooConverter”。行'3'位置'54'。

将 StaticResource 更改为 DynamicResource 不会发生任何变化。

我错过了什么?

FWIW:硬编码的数据模板

和这样定义的模板列

“有效”,但显然不会产生预期的结果,因为 Candidates[0] 是硬编码的。

0 投票
2 回答
1395 浏览

wpf - WPF:在绑定时指定 ValueConverter 的另一种方法

我遇到的为绑定指定值转换器的最常见方法是:
1. 将值转换器的实例创建为具有键的资源。
2. 使用 StaticResource 标记扩展引用实例:

Q:如下使用静态实例有什么问题吗:

在我的情况下,值转换器是不可变的。

编辑:另一种方法是将转换器转换为扩展 ,以便您使用标记扩展格式指定转换器:

0 投票
3 回答
8752 浏览

wpf - 为画笔创建 WPF ValueConverter

今天在Nerd Plus Art博客上,有一篇关于为箭头创建 WPF 资源的帖子,作者经常使用该资源。我有一个带有后退和前进按钮的辅助项目,所以我认为左箭头和右箭头在这些按钮上会很好用。

我将LeftArrowRightArrowGeometries 添加到我的应用程序资源中,然后将它们用作按钮的内容:

这行得通,除了无论按钮是否启用,箭头都被绘制为黑色。所以,我创建了一个ValueConverter从 abool到 a Brush

(我意识到我可能应该使用系统颜色而不是硬编码的黑色和灰色,但我只是想让这个工作,首先。)

我修改了 的Fill属性Path以使用我的转换器(我在应用程序的资源中创建):

不幸的是,这不起作用,我不知道为什么。当我运行它时,根本没有绘制箭头。我在 Visual Studio 中检查了输出窗口,没有显示绑定错误。bool我还根据是否应启用按钮验证了转换器中的值是否正确。

如果我将Path背面更改为 a (并以与 相同的方式TextBlock绑定其属性),则文本始终以黑色绘制。ForegroundPath.Fill

难道我做错了什么?为什么Brush我的转换器返回的不用于Path在按钮中呈现?

0 投票
5 回答
1056 浏览

wpf - 您的 ViewModel 是否应该将 XAML 元素公开为属性?

在 StackOverflow 问题上,如何在 MVVM 模式中使用 WPF 转换器?我了解到,值转换器不应该在 MVVM 模式中使用,因为值转换器的功能应该由 ViewModel 本身处理

这是有道理的。

但我记得读过你不应该向 View 公开 XAML 元素,而是只公开 View 然后使用 DataTemplates 绑定和显示的数据集合。

但是,转换器似乎非常强大(例如,它们在MVVM 模板演示中使用,解压后请参阅“Messenger 示例”),因为它们可以将对象转换为对象,例如将消息对象转换为 FlowDocument 对象,或将客户对象转换为 Visibility 对象,或自定义状态对象到图像等。

因此,如果 ViewModel 要承担 Value Converter 的功能,就必须公开 XAML 元素和属性,例如 StackPanel、Visibility、Color、FlowDocument 等,对吗?

有谁知道为什么 ViewModel 不应该像值转换器那样公开这些丰富的 XAML 对象?

0 投票
3 回答
810 浏览

wpf - 我与值转换器的数据绑定不起作用

我有一个简单的 Item-class,看起来像这样:

还有一个 ValueConverter,看起来像这样:

在我的 WPF 窗口中,我声明了一个 DependencyProperty(称为 Items),它包含一个 Item 对象列表(List< Item >),并使用此 XAML 代码创建一个绑定到此 DependencyProperty 的 ComboBox:

如果我执行一次下面的代码,数据绑定工作正常,但是如果我再次执行它,值转换会失败:

问题是,ItemToStringConverter.Convert 方法现在传递一个字符串对象作为第一个参数,而不是一个项目对象?

我究竟做错了什么?

问候,肯尼斯

0 投票
2 回答
255 浏览

c# - 有什么类似于 WPF 的 ASP.Net 的 ValueConverters 的吗?

在使用 WPF 完成了一个项目并非常喜欢它出色的数据绑定功能之后,我现在又回到了 ASP.Net 并开始怀念 WPF 的一些东西。

我的问题是......有什么类似于 WPF 的 ValueConverters for ASP.Net吗?

例如,我想要一个 UserControl 来公开一个公共属性,它是一个IEnumerable<int>并且用户可以从源输入这样的:

然后 in 的值TheList将转换为IEnumerable<int>,类似于 WPF 的 ValueConverter 。

[更新] 解决方案

感谢Nathan Baulch提到 a TypeConverter,我遇到了这个问题,并设法构建了一个字符串到列表转换器。

0 投票
2 回答
2028 浏览

wpf - WPF:控件绑定 - 从 C# 代码触发 IValueConverter

在我的 XAML 代码中,我已将控件的 Height 属性绑定到其父控件的 ActualHeight。因为我必须计算我使用的原始值和 IValueConverter 的偏移量。

到目前为止,这工作正常。

在某些事件之后,ValueConverter 中的公式确实发生了变化并生成了不同的输出。但是只有在我调整窗口大小后,控件才会刷新和对齐。有什么方法可以告诉控件(来自 C# 代码)刷新自身并从 ValueConverter 获取新值?

0 投票
1 回答
90 浏览

silverlight - 参数化 ControlTemplate 中使用的 ValueConverter 的好方法是什么?

我正在处理的模板化控件使用 ValueConverter,如下所示:

这是我在 generic.xaml 中提供的默认外观。当我使用这个控件时,我想将不同的格式字符串传递给转换器。有没有办法在不提供完整的 ControlTemplate 的情况下实现这一点?

我的第一个想法是我可以将带有 TemplateBinding 的 ConverterParameter 用于控件上的属性,但我发现 ConverterParameters 无法绑定。另一种选择可能是从 ConvertTo 方法访问控件,然后选择该属性。我不知道该怎么做。任何可以消除每次我使用控件时完全重新模板化控件的需要的选项都会有所帮助(这是很多 Xaml)。

0 投票
3 回答
1251 浏览

wpf - INotifyPropertyChange 不更新基于转换器的值?

我有一个源设置为 a 的图像ValueConverter

当绑定对象引发PropertyChanged事件(来自INotifyPropertyChanged)时,图像不会改变。我认为这是因为 WPF 不知道转换器查看哪些字段。

当某个属性发生变化时,如何告诉 WPF 重新绑定/重新运行此转换器?

0 投票
2 回答
5365 浏览

silverlight - 拦截 Silverlight DatePicker 从文本到 DateTime 的转换

我想DatePicker将以下文本转换为DateTime(以国际格式显示),以便我的客户可以更快地在文本框中写入日期,DatePicker所以这不仅仅是DateTime.Parse我会使用的:

我尝试了不同的方法来做到这一点,但它们不起作用。我试图用自定义值转换器绑定DatePicker.Text// 。但它不起作用,因为在我到达文本之前已经处理了文本。DatePicker.SelectedDateDatePicker.DisplayDateDatePicker

我也尝试过这样的转换DatePicker TextBox.LostFocus

有任何想法吗?