我正在将 a 转换WPF
为UWP
,它使用了多个IMultiValueConverters
. 我找不到任何参考IMultiValueConverter
。它在 中可用UWP
吗?如果没有,是否有替代方案?
3 回答
UWP 中没有多重转换器。
如果没有 Multiple Converter,您可以绑定到 ViewModel 中的单个属性。
1 该单个属性应考虑视图模型中的多个属性。
我们称它们为源属性
2 如果对源属性进行任何更改,它应该在单个属性上引发 PropertyChanged 事件。
问候
有一个很好的选择。在 Cimbalino 工具包(github 上的开源)中有一个 MultiBind 行为已被移植到 UWP
详情:https ://www.pedrolamas.com/2013/05/17/cimbalino-windows-phone-toolkit-multibindingbehavior/ 工具包代码:https ://github.com/Cimbalino/Cimbalino-Toolkit
它也可以作为 nuget 使用,我个人用它创建每个 UWP 应用程序,因为它有很多很棒的功能
绑定到多个值的一个非常简单的方法是将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}" />