【发布时间】:2011-10-24 19:03:02
【问题描述】:
我有一个包含 TextBlock 的网格。 Grid 的 DataContext 是 List<MyClass> 类型,我想将 TextBlock.Text 属性绑定到 List 中第一个元素的 MyClass.MyProperty 属性。我试过类似的东西:
<Grid x:Name="RootLayout">
<TextBlock Text="{Binding [0].MyProperty}" />
</Grid>
当然,这并没有奏效。这样做的正确方法是什么?
编辑:
我将尝试使我的解释更清楚。我在网格中有多个元素,每个元素都绑定到列表中的不同项目。项目以自定义方式布局,这是 GridView 或 ListBox 无法完成的。网格中的一项是 TextBlock,我想将其 Text 属性绑定到列表中第一个元素的属性。一旦我知道如何做到这一点,我就可以扩展该知识以将绑定添加到网格中的其余元素。
编辑 2:
事实证明,我的代码在 Silverlight 中运行良好。我的项目实际上是一个 WinRT 项目,但我想如果我将它标记为 Silverlight,我会得到更快的答案,因为数据绑定应该是一样的。我假设这是 WinRT 中的一个错误,所以我只需要找到一个解决方法:(
【问题讨论】:
-
第一个问题:你想显示所有项目还是只显示第一个?如果您想要所有项目,则需要 List 或 DataGrid 或其他支持多个项目的容器(例如,通过 ItemsSource 属性)。
-
@HiTech Magic 我需要所有物品。但是,我需要的布局并不完全适用于 ListBox 或 DataGrid。我还在为 Grid 中的每个单独项目添加动画,从而使事情变得更加复杂。
-
再读几遍,我只是不确定我们是否清楚地了解您在这里的目的。您需要列表中的所有项目,但您只希望 TextBox 绑定到列表中第一个项目的属性 - 网格中的其他控件是否绑定到列表中的其他项目?您是否有一个控件要用于迭代列表并让 TextBox 在您浏览时显示列表中每个项目的 MyProperty?