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

wpf - 基于组合框选择更新 Observable 集合

所以我有一个名为“Class1”的项目的 ObservableCollection,而 Class1 有一个名为“ID”的属性。

我使用 WPFToolkit 中的数据网格并绑定到此集合。在数据网格中有一个组合框列,我将它的 ItemsSource 绑定到类的 ID 属性。

在这一点上,一切都很好,一切都按应有的方式填充。我想要做的是修改 ObservableCollection 以反映在 ComboBox 中选择的值。

我有一个 ValueConverter 绑定到 ComboBox 上的 SelectedItemBinding ,如下所示:

修改集合的最佳(即:WPF 批准的方法)是什么?当调用 IDConverter ConvertBack() 方法时,我得到了适当的 Class1 实例,但我无法从 ValueConverter 中访问 Observable 集合,也无法访问 Datagrid 中的 SelectedIndex 值。

我可以使用指向我的集合的指针创建一个作为静态资源的类,并将其作为 ConverterParameter 传递,但这似乎有点做作,我假设必须有一些更巧妙的方法来使用数据绑定来做到这一点。

0 投票
1 回答
322 浏览

c# - 如何绑定 ConvertorParameter

我正在尝试绑定 ConverterParameter 的值。目前觉得太麻烦了...

代码隐藏

TextBox 的 XAML,它构成了封面流类型控件的数据模板的一部分。

谁能看到我要去哪里错了?

0 投票
3 回答
264 浏览

c# - 在 DataContext 切换后使用 ValueConverter

我想在一个类中尝试一个小的自定义ValueConverter,在实例化之后(通过仅调用的默认构造函数InitializeComponents()),给出另一个DataContext,特别是 ViewModel 的实例。

在aStaticResource中使用Binding根本不起作用(产生 a NullReferenceException),因为DataContext从那时起已经改变了(this不再是)。

我试过在打电话DataContext = this;之前放InitializeComponents,没有改变。我应该研究这个MarkupExtension小发明(如本文所述)吗?

我还尝试Value Converter在 ViewModel (当前DataContext)中创建自定义实例,但也无济于事。

我可以随时提供更多详细信息。先感谢您 !

我正在尝试在 TextBlock 中显示 ContextMenu。ContextMenu 包含一个唯一的 MenuItem。例如,MenuItem 的标题可以是“设置”。所述 MenuItem 的子项(也呈现为 MenuItems)源自枚举,因此是 MenuItem 上的 ItemsSource。

现在一切都很好地显示了,但我正试图让其中一个孩子(例如枚举的成员)被默认选择,因为已经有一个默认设置。更多背景信息可以在我的另一个问题中找到。

编辑

我现在才意识到这是可怕的 ContextMenu。这就是问题所在,不是吗?

0 投票
1 回答
1887 浏览

silverlight - 如何在 ValueConverter 中使用代码隐藏变量作为 ConverterParameter 的输入

我有一个 ListBox,在其中将 ItemsSource 设置为从 WCF 服务填充的 CollectionViewSource。我使用 ListBox.ItemTemplate\DataTemplate 中的值转换器来转换 ItemsSource 中对象的属性。

这一切都按预期工作,但现在我需要更新转换过程,以便转换后的值仍然基于单个对象属性值,除非不同的属性等于特定值。该值是在 xaml 后面的代码中设置的,这是在页面构造函数中设置的字段级变量。

为此,我想将字段级别变量作为 ValueConverter 的 ConverterParameter 传递。我尝试了几种主要使用this question中的想法的方法,除了解析xaml时总是出错(并且应用程序无法加载)。

一种解决方法可能是向 ItemsSource 中的对象添加一个属性,但我真的不想这样做。部分是因为该对象在多个项目中使用,所以我不想更改 i .... 并且因为我想看看其他方法是否可行。我也相信 wpf 有一个多值转换器(也许是 SL 4.0),但我在 SL 3.0 上。

我的猜测是到目前为止我遇到的问题是由于加载、绑定和解析 xaml 的时间。

所以有几个问题:

  • 这可以像我上面描述的那样完成吗?
  • 如果不是,那是什么问题?
  • 如果没有,是否有另一种方法不向对象添加属性?
0 投票
1 回答
509 浏览

c# - 如果用作列表框项,则不会在用户控件内触发值转换器

为了显示 WPF 列表框,我使用用户控件 (MessageRowTemplate) 作为列表框项。用户控制使用值转换器 (MessageTypeToBrushConverter)。出于某种原因,只有当用户控件不用作列表框项而是单独使用时,才会触发值转换器。

带有用户控件的 xaml 文件单独使用并在列表框中作为列表框项:

这是 MessageRowTemplate.xaml:

正如您可能猜到的,值转换器负责将某些值转换为画笔。它适用于此<local:MessageRowTemplate x:Name="questionControl" />,但不适用于列表框项目。

谷歌没有给我任何关于“列表框”、“列表框项”、“用户控件”、“值转换器”的关键字组合的提示。

你有想法吗?

预先感谢。

0 投票
1 回答
926 浏览

wpf - ResourceDictionary 作为 ValueConverter 中的 ContentProperty

要将枚举转换为图标,我使用这样的值转换器:

我像这样在我的 XAML 中使用它:

当我启动应用程序时一切正常,转换器转换一个值的名称并通过其键从 ResourceDictionary 获取图标。但在我的设计器中,Visual Studio 2010 总是抱怨:

这很讨厌!任何想法?是否有更简单的解决方案将 Enums 转换为 XAML-Icon 资源?

0 投票
2 回答
459 浏览

wpf - 为什么这两种将图像从 SQL CE 加载到 WPF 图像中的方法会产生不同的结果?

在 aValueConverter中,我试图将System.Data.Linq.Binary(SQL CE 映像)转换为BitmapImage. 此方法有效(图像在表单上正确显示):

此方法不起作用但奇怪的是没有抛出异常):

良好的编程实践表明您应该处理您创建的任何流......所以我很困惑为什么第二种方法不起作用,但第一种方法起作用。有什么见解吗?

0 投票
2 回答
2187 浏览

c# - 值转换器。强制 WPF 只调用一次

假设我有以下代码:

所以,除了 Converter 之外,我没有指定任何绑定信息……是否可以强制 WPF 只调用一次?

UPD:此时我将值转换器的状态存储在静态字段中

0 投票
1 回答
863 浏览

wpf - 为文本框组合 ValidationRule 和值转换器

我有一个简单的问题,我只是找不到一个好的解决方案。我有一个绑定到双属性值的文本框。用户可以在文本框中输入值,但我只想允许 0 到 100 之间的值。如果在文本框仍然具有焦点的情况下输入了无效值(UpdateSourceTrigger="PropertyChanged"),我想在文本框周围显示一个红色框)。如果用户单击文本框以外的地方,我想使用 UpdateSourceTrigger="LostFocus" 上的值转换器来限制值。

它很容易执行验证规则或转换器,但我无法将它们组合起来,因为我希望验证在 UpdateSourceTrigger="PropertyChanged" 上触发,并且转换器应该在 UpdateSourceTrigger="LostFocus" 上触发。不幸的是,在我的 TextBox.Text 上设置绑定时,我只能选择其中一个。

关于如何实现此功能的任何好主意?

谢谢

/彼得

0 投票
2 回答
1164 浏览

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

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

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

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

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

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

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

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

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