绑定到UWP中的多个属性

时间:2015-12-09 19:29:07

标签: wpf xaml data-binding uwp multibinding

在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传递。但是,ConverterPropertyn o ConverterProperty,因此无法绑定。

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

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

  • Wait for Microsoft to bring MultiBinding back.不幸的是,我缺乏必要的乐观态度。

在UWP应用程序中执行此操作的方法是什么?

1 个答案:

答案 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