在C#项目中,我有一个复杂的模型,它使用嵌套在列表和字典中的许多类(例如,对象A
有一个B
实例列表,其中有一个字典,其中值是实例C
)。
在我的一个页面中,使用嵌套的ItemsControl
s。
此外,还有一个Settings
类存储用户首选项,其中一些是绑定到页面上的复选框。
现在,我想将DataTemplate
中某些控件的属性绑定到模型属性和设置的组合。例如,假设C
有一个属性IsBoring
,并且有一个设置Settings.HideBoringStuff
。我想将代表TextBlock
的{{1}}的可见性绑定到这些属性的明显组合。
我不知道如何在没有丑陋的黑客的情况下做到这一点。 以下是我的一些想法以及它们不起作用的原因:
使用专为此目的而设计的C
。但是,MultiBinding
在UWP项目中不可用。
Bind to multiple properties on the page that implement the logic in their getters and setters.这不起作用,因为我在MultiBinding
内,所以我需要这个逻辑的多个独立副本。
使用DataTemplate
转换模型属性,将设置作为Converter
传递。但是,ConverterProperty
为n o ConverterProperty
,因此无法绑定。
在模型中构建所需的属性 - DependencyProperty
无论如何都是单身。这感觉非常难看,因为我会在我的模型中混合不必要的依赖关系并查看逻辑。
构建包装模型类的单独类,还存储要使用的Settings
对象,然后提供组合属性。这也感觉很难看,因为我需要复制模型的整个对象层次结构。 (在示例中,Settings
需要提供ViewA
个列表,每个列表都有一个字典,其值为对应的ViewB
。)
Wait for Microsoft to bring MultiBinding
back.不幸的是,我缺乏必要的乐观态度。
在UWP应用程序中执行此操作的方法是什么?
答案 0 :(得分:4)
确实,Multibinding还没有出现在新的win dev堆栈上。但是从早期的wp8天开始,Cimbalino工具包已经有了它。 它还有一个UWP端口。
所以也许试试吧!
Blogpost从早期开始解释使用:https://www.pedrolamas.com/2013/05/17/cimbalino-windows-phone-toolkit-multibindingbehavior/ 抓住Cimbalino是通过nuget完成的,可以在Github上找到https://github.com/Cimbalino/Cimbalino-Toolkit