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

wpf - IValueConverter 上的数据绑定

有谁知道是否可以对基于 IValueConverter 的类进行数据绑定?

我有以下转换器:

其目的是通过其 Id 在列表中查找文章,并返回该文章。

但是,我想通过将集合数据绑定到它来填充 Articles 属性,如下所示:

但这似乎不起作用。永远不会调用 setter 方法。source 属性包含一个实际的非空集合,所以这不是问题。

输出日志中也没有关于绑定的错误消息。

有什么线索吗?

0 投票
1 回答
2557 浏览

wpf - WPF:列表框,值转换器

将 valueconverter 与列表框一起使用的最简单方法是什么?

我在运行时将 ItemSource 设置为 List<> 对象,它显示来自 ToString() 方法的文本字符串。不过,我想要的是通过 valueconverter 传递对象以获得完全不同的字符串值。

我发现的所有示例都大量将列表绑定到 xaml 中的某些内容,并定义样式和模板以重新设计整个框,但我只想转换我的值......

0 投票
2 回答
2372 浏览

.net - 从 IValueConverter 获取对 ViewModel 的引用

是否有一种干净和/或可接受的标准方式从 IValueConverter 引用 ViewModel,或者这是否破坏了 MVVM 模式?基本上,我想根据 ViewModel 的其他属性转换 UI 中的绑定数据。我想这与如何从 IValueConverter 引用窗口/页面是同一个问题,因为对控件的引用没有传递给 Convert/ConvertBack 方法。

0 投票
3 回答
5301 浏览

wpf - WPF - TextBlock 中超链接的 DataTemplate/Value 转换器

我有一个 ListBox 显示人员姓名、电子邮件、部门等的列表。有一个 DataTemplate 有几个 TextBlocks 来显示每个属性。其中一个 TextBlocks 包装了一个超链接以显示电子邮件地址,如下所示:

这很好用,但如果此人没有电子邮件地址,则 TextBlock 不会自动折叠。所以我写了一个值转换器并以这样的风格使用(简化):

这是使用 ValueConverter 的样式:

我将调用转换器的样式添加到 TextBlock:

在此更改之后,电子邮件地址不再显示 - 在值转换器中,TextBlock 的文本始终为空并返回 Visibility.Collapsed。这就像它在加载超链接之前评估 TextBlock 的文本或其他东西......

请帮我解决这个问题。

谢谢!

0 投票
6 回答
24597 浏览

datagrid - 将字段的值传递给 Silverlight ConverterParameter

我正在编写我的第一个 Silverlight 应用程序。我有一个带有两个标签的列的数据网格,对于标签,我使用 IValueConverter 有条件地格式化数据。

标签的“内容”设置如下:

我的 IValueConverter的Convert方法是这样的:

所以我想做的是在 HomeScore 的转换器中,我想将 AwayScore 传递给 ConverterParameter,而对于 AwayScore,我想将 HomeScore 传递给转换器。在任一分数的转换器中,我需要能够知道另一个分数的值以进行格式化。

但我无法弄清楚将 ConverterParameter 绑定到另一个字段的语法。
我尝试了以下方法:

但这些似乎都不起作用。如何将字段值传递给 ConverterParameter?

0 投票
1 回答
966 浏览

formatting - 基于多个字段的条件格式

我需要有条件地格式化数据网格的单元格,但“条件”部分需要基于数据源中几个不同字段/属性的值。

我想我可以使用条件格式的典型 IValueConverter 方法,并通过 ConverterParameter 将“其他”值传递给转换器,但似乎你不能将 ConverterParameter 绑定到任何东西,只能传入文字。

我将如何根据多个值执行一个值的条件格式?

0 投票
1 回答
2445 浏览

silverlight - 数据网格中的列表框数据模板中的 Silverlight 更新/触发 IValueConverter

我正在构建一个应用程序来显示绑定到记录的 ObservableCollection 的数据网格,其中每条记录都有一个课程对象和一个结果对象的 ObservableCollection。

使用自动完成框更改课程。结果集合显示在具有 IValueConverter 实现的列表框中,以根据当前所选课程的标准更改椭圆模板的颜色。

它在加载时效果很好,但是通过自动完成对课程选择的后续更新不会触发值转换器的重新计算/刷新。

有没有办法在 XAML 中触发刷新。我添加了 UpdateSource=Property 更改为列表框的绑定 - 但这导致了堆栈溢出(哈哈)。

这是代码:

我设法订阅了自动完成框上的 LostFocus 事件并重置了我在数据网格上已有的过滤器。但这不是非常低效吗?刷新数据网格上的视图对该方法没有任何影响。

非常感谢朝着正确方向迈出的任何一步。试图阻止自己变灰:)

有想过在网格中获取列表的绑定表达式并更新它,但没有线索吗?

多谢你们

0 投票
2 回答
4042 浏览

wpf - WPF 和 MVVM:在运行时更改数据绑定转换器

我在我的用户界面中使用 WPF 和 MVVM 模式。在我的 ViewModel 中,我有一个包含以毫米为单位的距离的列表,我通过将 ListView.ItemsSource 绑定到列表来显示在 ListView 中。但是,我希望显示的值使用更自然的单位 - 米或英尺,具体取决于“公制”复选框的状态。

我编写了几个简单的类,MillimetresToMetresConverter 和 MillimetresToFeetConverter,它们都实现了 IValueConverter。虽然我可以将我的数据绑定上的 Converter 属性设置为一个或另一个,但我不确定当复选框的状态发生变化时如何在这些转换器之间进行更改。

我的计划是在我的 ViewModel 上有一个字段“IValueConverter lengthConverter”,我可以将其设置为一个转换器或另一个,然后在我的 XAML 中执行...="{Binding Converter={Binding Path=lengthConverter}}"- 不幸的是,这不起作用,因为 Converter 不是依赖属性。

如何在运行时更改数据绑定使用的转换器?

0 投票
3 回答
7323 浏览

wpf - 我应该在 App.xaml 中声明转换器还是作为每个文件的资源?

在 WPF 应用程序中声明转换器时,我应该:

  1. 在 App.xaml 中声明我的所有转换器(即在 中<Application.Resources/>),以便它可用于整个应用程序
  2. 在他们的部分中为每个Page///等声明只需要的转换WindowResourceDictionaryUserControlResources
  3. 完全不同的东西

关于可读性,方法 1 对我来说似乎是最好的,但我的问题是关于性能。就性能、内存等而言,哪种方法最节省资源?

0 投票
1 回答
5448 浏览

wpf - wpf datagrid observablecollection

我正在使用 WPF 开发一个大型数据库应用程序。到目前为止,我已经能够使用 Link to Sql 类创建一个 DataContext,将其存储在 ObservableCollection 中,并将其作为 DataContext 提供给我的 DataGrid。

我试图读/写的 SQL 中的主表如下所示

我想通过使用 DataTemplates 和内联编辑在我的 DataGrid 中表示这些列

我是否必须使用包含所有这些列和 ID 的代理类?我应该修改我的 observablecollection,还是应该根据事件处理代码中的所有内容?我喜欢数据网格执行基本 CRUD 的事实,这实际上很棒,因为我目前处于时间限制状态。

我对 WPF 非常陌生,尤其是对 DataGrid 控件。我也阅读过有关 IValueConverters 的信息,但我不确定这是否是可行的方法以及我可能会遇到什么性能问题。

如果有人能指出我正确的方向,到目前为止,我发现的所有搜索都是简单的表,没有使用外键等。


更新
到目前为止,我发现了这段代码并取得了一些进展,但现在问题是排序。

这确保了能够显示“客户名称”而不仅仅是 Customer_ID。当然,我想将基础数据保留为整数,但显示用户可读的描述。现在的问题是排序。我只是想知道是否有办法非常干净地做到这一点。我认为这是一种常见的情况,但我没有成功找到解决方案。我想也许我正在寻找错误的搜索词。

为了简化事情,这是我到目前为止所拥有的:

1.) 我有一个名为 Work_Table 的表,其中包含 Work_ID、Customer_ID、Employee_ID 等。
2.) 我有另一个名为 Customers_Table 的查找表,其中包含 Customer_ID、CustomerName 等。
3.) 我必须在 DataGrid 中显示这些列- Work_ID、CustomerName 等...

我有一个我的 DataGrid 绑定到的 ObservableCollection。在我尝试组合框方法之前,它显示了 Work_ID、Customer_ID、Employee_ID 等。基本上是整个表及其列。

问题是我执行第 3 项的最佳方法是什么。)?我应该将我的 DataGrid 绑定到只包含我需要的列的自定义 ObservableCollection 吗?IValueConverter 是另一种可行的解决方案,因此当 DataGrid 即将显示 Customer_ID 时,它将显示 CustomerName 吗?

在我规范化数据库之前,我之前没有这个问题。