绑定到 UWP 中的多个属性
Bind to multiple Properties in UWP
在 C# 项目中,我有一个复杂的模型,它使用大量嵌套在列表和字典中的 classes(例如,对象 A
有一个 B
的实例列表,它有一个字典,其中值是 C
的实例)。
在我的一个页面中,此模型使用嵌套 ItemsControl
s.
以复杂视图显示
此外,还有一个 Settings
class 存储用户偏好,其中一些与页面上的复选框绑定。
现在,我想将 DataTemplate
中某些控件的属性绑定到模型 属性 和设置的组合。例如,假设 C
有一个 属性 IsBoring
,并且有一个设置 Settings.HideBoringStuff
。我想将表示 C
的 TextBlock
的可见性绑定到这些属性的明显组合。
我不知道如何在没有丑陋黑客的情况下做到这一点。
以下是我的一些想法以及它们为何不起作用:
使用专门为此设计的MultiBinding
。但是,MultiBinding
在 UWP 项目中不可用。
Bind to multiple properties on the page that implement the logic in their getters and setters. 这不起作用,因为我在 DataTemplate
中,所以我需要这个逻辑的多个独立副本。
使用 Converter
转换模型 属性,将设置作为 ConverterProperty
传递。但是,ConverterProperty
是 no DependencyProperty
,因此无法绑定。
将所需的属性直接构建到模型中 – Settings
无论如何都是单例。这感觉真的很难看,因为我会将不必要的依赖项和视图逻辑混合到我的模型中。
构建单独的 classes 来包装模型 classes,还存储要使用的 Settings
对象,然后提供组合属性。这感觉也很丑陋,因为我需要复制模型的整个对象层次结构。 (在这个例子中,ViewA
需要提供一个 ViewB
的列表,每个列表都有一个字典,其中的值是对应的 ViewC
。)
Wait for Microsoft to bring MultiBinding
back. 不幸的是,我缺乏必要的乐观情绪。
哪些是在 UWP 应用程序中执行此操作的简洁方法?
没错,Multibinding 还没有出现在新的 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
上获得
在 C# 项目中,我有一个复杂的模型,它使用大量嵌套在列表和字典中的 classes(例如,对象 A
有一个 B
的实例列表,它有一个字典,其中值是 C
的实例)。
在我的一个页面中,此模型使用嵌套 ItemsControl
s.
此外,还有一个 Settings
class 存储用户偏好,其中一些与页面上的复选框绑定。
现在,我想将 DataTemplate
中某些控件的属性绑定到模型 属性 和设置的组合。例如,假设 C
有一个 属性 IsBoring
,并且有一个设置 Settings.HideBoringStuff
。我想将表示 C
的 TextBlock
的可见性绑定到这些属性的明显组合。
我不知道如何在没有丑陋黑客的情况下做到这一点。 以下是我的一些想法以及它们为何不起作用:
使用专门为此设计的
MultiBinding
。但是,MultiBinding
在 UWP 项目中不可用。Bind to multiple properties on the page that implement the logic in their getters and setters. 这不起作用,因为我在
DataTemplate
中,所以我需要这个逻辑的多个独立副本。使用
Converter
转换模型 属性,将设置作为ConverterProperty
传递。但是,ConverterProperty
是 noDependencyProperty
,因此无法绑定。将所需的属性直接构建到模型中 –
Settings
无论如何都是单例。这感觉真的很难看,因为我会将不必要的依赖项和视图逻辑混合到我的模型中。构建单独的 classes 来包装模型 classes,还存储要使用的
Settings
对象,然后提供组合属性。这感觉也很丑陋,因为我需要复制模型的整个对象层次结构。 (在这个例子中,ViewA
需要提供一个ViewB
的列表,每个列表都有一个字典,其中的值是对应的ViewC
。)Wait for Microsoft to bring
MultiBinding
back. 不幸的是,我缺乏必要的乐观情绪。
哪些是在 UWP 应用程序中执行此操作的简洁方法?
没错,Multibinding 还没有出现在新的 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
上获得