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