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

c# - IValueConverter 数据绑定

我正在自学一些 .NET 编程,目前正在尝试在 WPF 中构建标签云控件。目的是在一个窗口上有 2 个列表框,第一个列表框显示“联系人列表”列表,第二个列表框显示与联系人列表关联的“标签”(或标签)。对于标签,目标是使用 IValueConverter 将字体大小绑定到 itemCount,因此如果我有一个特定标签在我的集合中出现多次,它将在标签列表框中以更大的字体显示。此外,我正在从 DB2 数据库填充我的控件。

所以我已经在正确的列表框中显示联系人列表和标签,我只是在绑定时遇到了一些问题。我正在使用从教程中获取的转换器类,并且想知道是否有人可以帮助我完成这项工作。非常感谢 - 本

特性

联系人列表类

转换器

窗口加载事件

XAML

0 投票
2 回答
1233 浏览

c# - 工作流 4 活动设计器 IValueConverter

假设我有一个 InArgument<int> ProductId 的活动

我想在活动设计器中公开一个组合框来显示所有产品,并且用户可以选择一个产品。

我可以在组合中显示产品列表没问题。但是如何将所选产品绑定到我的自定义活动的 InArgument<int>?

我想我需要某种 ValueConverter?不知道如何为这种情况编写值转换器,如果有人有想法,建议会有所帮助。我必须将 InArgument<int> 转换为 int?以及从 int 转换回 InArgument<int>

谢谢,

0 投票
1 回答
691 浏览

c# - Prism v4:它是否已经包含处理值转换器(作为单例)的方法?

我在网上找到了这段小代码:

它基本上做了两件事:
1.创建一个单例(非常方便)
2.允许您在不创建静态控件的情况下使用转换器(MarkupExtension

我想知道的是,如果我使用 Prism v4 作为我的框架,是否已经内置了类似的东西。我宁愿使用 Prism 内置的任何工具,也不愿编写类似或重复的代码。我对 Prism 不是很熟悉,但我在里面找不到这样的东西。哦,我也有类似的功能IMultiValueConverter

0 投票
2 回答
4258 浏览

wpf - WPF 绑定 IValueConverter 和另一个控件的宽度


以下代码工作正常。代码的其他地方有错误。不过,给出的建议还是不错的。


我正在尝试将Widtha绑定到父控件TextBox的百分比。Width我知道我可以通过简单地设置 a 来完成类似的事情Margin,但我想知道为什么这不起作用。

首先,我IValueConverter在用户控件的资源集合中设置了对 an 的引用:

在主要的 xaml 中,我有以下内容:

ivalueconverter 如下所示:

设置 width 属性在这里没有任何作用,更不用说设置IValueConverter. 我希望ScrollViewer是 parent 宽度的 1/4 StackPanel

0 投票
4 回答
13266 浏览

wpf - 将 IValueConverter 与 DynamicResource 一起使用?

DynamicResource使用扩展时有没有办法定义转换器?有点像

不幸的是,这给了我以下例外:

不能在“Binding”类型的“Source”属性上设置“DynamicResourceExtension”。只能在 DependencyObject 的 DependencyProperty 上设置“DynamicResourceExtension”。

0 投票
1 回答
4656 浏览

wpf - INotifyPropertyChanged 不更新值转换器

我有一些实现INotifyPropertyChanged接口的属性。它工作正常。但在我的代码中,我还使用了一些值转换器(如果值 < 3 - 使网格变为红色,如果值 >3 且值 < 10 - 使网格变为蓝色等)。

问题是如何在PropertyChanged引发后刷新值转换器?解决方案背后是否有简单的代码?谢谢大家,对不起我的英语不好!

这里有一些代码:

在这里,我将我的值转换器应用于网格:

0 投票
1 回答
695 浏览

silverlight - Windows Phone Silverlight - 如果绑定数据长度为 0,则设置按钮 IsDisabled

这就是我所拥有的——我正在编写一个应用程序,除其他外,它会读取 RSS 提要以获取某个播客的剧集,然后显示每个剧集的标题和描述,并带有“收听”和“观看”按钮。但并非所有剧集都有这两个选项 - 如果其中一个选项不可用,RSS 将返回一个空字符串而不是 URL。因此,我尝试使用可以将 IsDisabled 绑定到的 IValueConverter,如果绑定的数据长度为 0,则返回 true,否则返回 false。现在,我只是在“watch”按钮上测试它,因为“listen”按钮的绑定几乎相同。

MainPage.xaml.cs 的片段:

MainPage.xaml 的片段:

但是调试器抛出两个错误:

1) XML 命名空间“http://schemas.microsoft.com/winfx/2006/xaml/presentation”中不存在标记“StringLengthVisibilityConverter”

2) 找不到类型“StringLengthVisibilityConverter”。验证您没有丢失程序集并且所有引用的程序集都已构建

我将转换器设置为 {StaticResource StringLengthVisibilityConverter} (根据http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter(v=VS.95).aspx),现在只有一个错误:无法解析资源“StringLengthVisibilityConverter”。有了这个错误,我可以调试(运行)代码,但所有的“监视”按钮仍然处于启用状态。

所以我猜我在错误的名称空间中调用它,但我似乎无法找出正确的名称空间。有人可以指出我正确的方向吗?

谢谢!

编辑:在将这些放在一起的过程中,我意识到我需要以不同的方式执行此操作 - 提要现在具有我可以数据绑定到的附加值。但是,我很确定将来某个时候我会需要这个功能,所以无论如何我都会发布。如果该问题有简单的解决方案,请告诉我,以便我下次学习并成功完成!

0 投票
1 回答
2710 浏览

c# - 使用 ValueConverter 的 WPF 网格 IsEnabled

我有一个带有 Grid 和 TreeView 的 WPF 窗口。网格的数据上下文绑定到树视图上的选定项。但是,由于并非所有树视图项都适用,因此如果树视图项不适用,我想禁用网格。因此,我创建了一个值转换器来进行空值检查并返回一个布尔值。(在这种情况下,适用项目不会为空)

问题是从未使用过值转换器。我设置了断点,它们永远不会被击中。我有其他我正在使用的价值转换器,它们都工作得很好。

有什么我想念的吗?

并不是说这对这个问题很重要,但这里是 ValueConverter 代码:

0 投票
2 回答
1164 浏览

c# - 如何实现需要来自viewmodel的数据的WPF ValueConverter?

我正在编写一个应用程序,该应用程序具有一个视图模型和一个显示来自该视图模型的数据的用户控件。视图模型包含一个实体“约会”,这些约会具有一个属性“用户名”。

当我显示约会时,我想使用值转换器为用户获取颜色(取决于“用户名”),但颜色不包含在实体“约会”中,所以我想创建一个值-使用视图模型中的实体“用户”的转换器。

从转换器内部的视图模型中使用另一个实体的最佳方法是什么?

是否可以从用户控件访问视图模型?我试图将转换器放在我的视图模型类中,但我可以从用户控件访问这个类吗?

我发现以下可能性可能有效:

  1. 调整视图模型,使每个约会也包含颜色。但我不想这样做,因为我不想弄乱视图模型。

  2. 在启动时从还包含视图模型的类中设置转换器参数。(这行得通吗?)

  3. 使用 x:Reference 将转换器参数数据绑定到编译时未知的视图模型。(这可能吗?)

0 投票
1 回答
611 浏览

wpf - WPF:MVVM - 在 ivalueconverter 转换异常上禁用命令附加按钮

我有一个简单的场景和一个问题,过去几天我似乎无法解决。

好的,首先我使用 MVVM 将我的 View 绑定到 ViewModel 上。我在我的视图中有几个文本框,它们绑定到 ViewModel 中的多个属性(大多数字符串)(实际上绑定到带有字符串属性的自定义对象(类型 Person,名称 SelectedPerson),对象是视图模型的属性)。此对象实现 INotifyPropertyChanged 和 IDataErrorInfo。它还有一个名为 Age 的 int 属性。我的视图中还有一个按钮,它绑定到我的视图模型中的命令,CanExecute 内部的命令测试 SelectedPerson 的属性,如果一切正确,则返回 true。

现在我的问题是:如果我从我的视图中放入我的年龄文本框,而不是 int,会出现一个红色的 tectagle(这是正常的,因为转换存在异常),但在那个特定的时刻,后面的对象( SelectedPerson, type Person) 没有发送 newValue (setter 到那个属性 Age,或者 IDataErrorInfo 成员不拦截值....我想这是正常的,因为没有任何“新”值,因为我首先在文本框中输入了不正确的格式)。

所以,也许我再说一遍,问题是:如果没有设置新的年龄(新的不正确的年龄),那么后面的对象仍然保持最后一个值,如果它是正确的,那么命令本身就是正确的(可以执行将return true) 并且按钮已启用

正如您可以想象的那样,当当前属性不通过转换方法时,我希望禁用提交按钮(它是一个在数据存储模块中保存当前人员详细信息的按钮)。

PS:我使用了 IValueConverter 类,在绑定到 Age 的那个文本框中,我使用了我的 StringToIntConverter 类....但是在 Convert Method 我不知道如何传递 SelectedPerson 绑定对象(我只是传递文本值,并返回 int 值)

我想一种方法是使用 MultiBinding 场景,但我不确定。

如果我可以从该转换器传递 SelectedPerson 内部的 Convert 方法,我可以使转换器本身的该命令无效。

对不起我的英语,我知道它远非完美:) 并提前感谢您的时间。