I’ve got a Grid which contains a TextBlock. The Grid’s DataContext is of type List<MyClass>, and I’d like to bind the TextBlock.Text property to the MyClass.MyProperty property of first element in the List. I tried something like:
<Grid x:Name="RootLayout">
<TextBlock Text="{Binding [0].MyProperty}" />
</Grid>
But of course, that did not work. What’s the right way of doing this?
Edit:
I’m going to try and make my explanation more clear. I’ve got multiple elements in the grid, each of which binds to a different item in the list. The items are laid out in a customized manner which cannot be accomplished by a GridView or ListBox. One of the items in the Grid is the TextBlock, and I’d like to bind its Text property to a property of the first element in the list. Once I know how to do that, I can extend that knowledge to add bindings to the rest of the elements in the grid.
Edit 2:
Turns out, my code works just fine in Silverlight. My project is actually a WinRT project, but I figured I’d get quicker answers if I tagged it as Silverlight, since databinding is supposed to work the same. I’m assuming this is a bug in WinRT, so I’ll just have to find a workaround for it 🙁
I’m not sure I get why you want to do this, but you could create a property that returns what you want from the item in the list like so:
Then you’d bind to
MyBindingProperty:EDIT
I was wrong in saying you can’t get at the items in the List – my bad. Your binding should look like this:
If you need me I’ll be in the corner enjoying my humble pie.