【问题标题】:Bind second level of nested arrays in XAML on Windows 8在 Windows 8 上的 XAML 中绑定第二级嵌套数组
【发布时间】:2012-09-08 14:52:15
【问题描述】:
我想将一个两级嵌套数组绑定到 Windows 8 Metro 风格应用程序中的 XAML 控件。数组看起来像(其中 A、B、C 是顶级数组的元素)
一个
--W
- X
乙
--是
C
--Z
我想绑定W、X、Y 和Z 的属性。
实现这一目标的推荐方法是什么?我应该使用IValueConverter(这会导致很多代码)吗?
【问题讨论】:
标签:
xaml
data-binding
windows-8
windows-runtime
winrt-xaml
【解决方案1】:
如果我正确理解您的问题,我认为您可以在属性中使用 LINQ 的 SelectMany() 并报告 PropertyChanged。像这样的:
private string[][] _my2DArray;
public string[][] My2DArray
{
get { return _my2DArray; }
set
{
_my2DArray = value;
OnPropertyChanged("My2DArray");
OnPropertyChanged("InternalArrays");
}
}
public IEnumerable<string> InternalArrays
{
get { return _my2DArray.SelectMany(a => a); }
}
您可能需要考虑使用 ObservableCollection 而不是数组来通知集合内的更改。
【讨论】:
-
感谢您的回答。但我认为它没有回答我的问题。我的问题是我无法绑定到 all 二级数组中的元素的属性。在其他平台(不是 Windows 8)上,可以使用 XPath 表达式作为绑定(请参阅this answer on SO)。但这在 Win8 上是不可能的。