Скажем, у меня есть некоторые текстовые блоки в моем пользовательском интерфейсе, примерно так:
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding DessertIndex}" />
<TextBlock Text="{Binding Food[2]}" />
<TextBlock Text="{Binding Food[{Binding DessertIndex}]}" />
</StackPanel>
и в моем коде позади у меня есть что-то вроде этого:
public partial class MainWindow : Window
{
public int DessertIndex
{
get { return 2; }
}
public object[] Food
{
get
{
return new object[]{"liver", "spam", "cake", "garlic" };
}
}
public MainWindow()
{
InitializeComponent();
DataContext = this;
}
}
Первые два TextBlocks отображаются отлично для меня, отображая 2 и 'cake' соответственно. Третий не выполняет то, что я хотел бы, а именно использовать свойство DessertIndex для индексации в этот массив, а также отображать "cake". Я немного искал здесь на SO для аналогичного вопроса, но не нашел его. В конечном счете, я не хочу указывать такие значения, как 2 в моем .xaml файле, и хотел бы полагаться на свойство вместо этого для индексации в этот массив. Это возможно? Если да, то что я делаю неправильно здесь?
EDIT:
Так что я более тесно - ситуация, когда данные представляют собой Список этих объектов [], и я использую вышеуказанный StackPanel как часть DataTemplate для ListBox. Таким образом, идея, как предлагает Марк Хит, использовать свойство, которое разделяет массив, похоже, не работает так, как я бы хотел. Идеи?