在C#项目中,我有一个复杂的模型,它使用嵌套在列表和字典中的许多类(例如,对象A
有一个实例列表B
,其中包含值为实例的字典C
).在我的一个页面中,使用嵌套ItemsControl
s 在复杂视图中显示此模型.
此外,还有一个Settings
存储用户首选项的类,其中一些首选项绑定到页面上的复选框.
现在,我想将DataTemplate
s 中某些控件的属性绑定到模型属性和设置的组合.例如,假设C
有一个属性IsBoring
,并且有一个设置Settings.HideBoringStuff
.我想将TextBlock
表示的可见性绑定C
到这些属性的明显组合.
没有丑陋的黑客,我不知道怎么做.以下是我的一些想法以及它们不起作用的原因:
使用a MultiBinding
,专门用于执行此操作.但是,MultiBinding
在UWP项目中不可用.
绑定到页面上的多个属性,这些属性在getter和setter中实现逻辑.这不起作用,因为我在里面DataTemplate
,所以我需要这个逻辑的多个独立副本.
使用a Converter
转换模型属性,将设置作为a传递ConverterProperty
.但是,它ConverterProperty
是n o DependencyProperty
因此不能被约束.
在模型中构建所需的属性 - Settings
无论如何都是单身.这感觉真的很难看,因为我会在我的模型中混合不必要的依赖关系并查看逻辑.
构建包装模型类的单独类,还存储Settings
要使用的对象,然后提供组合属性.这也感觉很难看,因为我需要复制模型的整个对象层次结构.(在示例中,ViewA
需要提供一个ViewB
s 列表,每个列表都有一个字典,其中的值是相应的ViewC
s.)
等待微软带MultiBinding
回来.不幸的是,我缺乏必要的乐观态度.
在UWP应用程序中哪些是干净的方法?