5

我正在将 a 转换WPFUWP,它使用了多个IMultiValueConverters. 我找不到任何参考IMultiValueConverter。它在 中可用UWP吗?如果没有,是否有替代方案?

4

3 回答 3

3

UWP 中没有多重转换器。

如果没有 Multiple Converter,您可以绑定到 ViewModel 中的单个属性。

1 该单个属性应考虑视图模型中的多个属性。

我们称它们为源属性

2 如果对源属性进行任何更改,它应该在单个属性上引发 PropertyChanged 事件。

问候

于 2016-06-23T14:27:49.793 回答
2

有一个很好的选择。在 Cimbalino 工具包(github 上的开源)中有一个 MultiBind 行为已被移植到 UWP

详情:https ://www.pedrolamas.com/2013/05/17/cimbalino-windows-phone-toolkit-multibindingbehavior/ 工具包代码:https ://github.com/Cimbalino/Cimbalino-Toolkit

它也可以作为 nuget 使用,我个人用它创建每个 UWP 应用程序,因为它有很多很棒的功能

于 2016-06-24T12:51:54.410 回答
2

绑定到多个值的一个非常简单的方法是将x:Bind 与 function 一起使用。例如,

<TextBlock Text="{x:Bind local:Helper.FormatName(Id, Name)}" />

或者

<TextBlock Text="{x:Bind local:Helper.FormatTotal(ViewModel.SelectedWidget.Cost, ViewModel.Quantity, ViewModel.Bundles)}" />

在这两个示例中,该函数都是静态函数,但该函数也可以在代码中定义或作为视图模型的一部分进行定义。

<TextBlock Text="{x:Bind CalculateResult(ViewModel.Widget, ViewModel.Foo)}" />
<TextBlock Text="{x:Bind ViewModel.FormatResult(ViewModel.Widget, ViewModel.Foo)}" />

您可以传递包含多个属性的单个对象,而不是传递单个值。

<TextBlock Text="{x:Bind local:Helper.FormatResult(ViewModel.Widget)}" />

函数绑定非常灵活,通常可以用来代替转换器,从而创建更简单、更易读的代码。

<TextBlock Background="{x:Bind local:Helper.GetColor(ViewModel.Widget)}" />

通过添加 BindBack 函数,函数绑定也可以与两种方式的绑定一起使用。

<TextBox Text="{x:Bind ViewModel.FormatWidget(ViewModel.Widget), BindBack=ViewModel.UpdateWidget}" />
于 2020-03-14T08:15:04.587 回答