绑定到UWP中的多个属性

fef*_*rei 5 data-binding wpf xaml multibinding uwp

在C#项目中,我有一个复杂的模型,它使用嵌套在列表和字典中的许多类(例如,对象A有一个实例列表B,其中包含值为实例的字典C).在我的一个页面中,使用嵌套ItemsControls 在复杂视图中显示此模型.

此外,还有一个Settings存储用户首选项的类,其中一些首选项绑定到页面上的复选框.

现在,我想将DataTemplates 中某些控件的属性绑定到模型属性和设置的组合.例如,假设C有一个属性IsBoring,并且有一个设置Settings.HideBoringStuff.我想将TextBlock表示的可见性绑定C到这些属性的明显组合.

没有丑陋的黑客,我不知道怎么做.以下是我的一些想法以及它们不起作用的原因:

  • 使用a MultiBinding,专门用于执行此操作.但是,MultiBinding在UWP项目中不可用.

  • 绑定到页面上的多个属性,这些属性在getter和setter中实现逻辑.这不起作用,因为我在里面DataTemplate,所以我需要这个逻辑的多个独立副本.

  • 使用a Converter转换模型属性,将设置作为a传递ConverterProperty.但是,它ConverterPropertyn o DependencyProperty因此不能被约束.

  • 在模型中构建所需的属性 - Settings无论如何都是单身.这感觉真的很难看,因为我会在我的模型中混合不必要的依赖关系并查看逻辑.

  • 构建包装模型类的单独类,还存储Settings要使用的对象,然后提供组合属性.这也感觉很难看,因为我需要复制模型的整个对象层次结构.(在示例中,ViewA需要提供一个ViewBs 列表,每个列表都有一个字典,其中的值是相应的ViewCs.)

  • 等待微软带MultiBinding回来.不幸的是,我缺乏必要的乐观态度.

在UWP应用程序中哪些是干净的方法?

Dep*_*hie 4

确实,多重绑定尚未出现在新的 win 开发堆栈上。但 Cimbalino 工具包从 wp8 早期就已经有了。它还具有 UWP 端口。

所以也许可以尝试一下!

早期的博客文章解释了其用途: https: //www.pedrolamas.com/2013/05/17/cimbalino-windows-phone-toolkit-multibindingbehavior/ 获取 Cimbalino 是通过 nuget 完成的,可以在 Github 上找到https ://github.com/Cimbalino/Cimbalino-Toolkit