Привязка данных к списку в Silverlight - PullRequest
0 голосов
/ 24 октября 2011

У меня есть Grid, который содержит TextBlock. DataContext Grid имеет тип List<MyClass>, и я хотел бы связать свойство TextBlock.Text со свойством MyClass.MyProperty первого элемента в списке. Я пробовал что-то вроде:

<Grid x:Name="RootLayout">
    <TextBlock Text="{Binding [0].MyProperty}" />
</Grid>

Но, конечно, это не сработало. Как правильно это сделать?

Edit:

Я попытаюсь разъяснить свое объяснение. У меня есть несколько элементов в сетке, каждый из которых связан с отдельным элементом в списке. Элементы располагаются в индивидуальном порядке, который не может быть выполнен с помощью GridView или ListBox. Одним из элементов в Grid является TextBlock, и я хотел бы связать его свойство Text со свойством первого элемента в списке. Когда я знаю, как это сделать, я могу расширить эти знания, чтобы добавить привязки к остальным элементам сетки.

Редактировать 2:

Оказывается, мой код прекрасно работает в Silverlight. Мой проект на самом деле является проектом WinRT, но я подумал, что получу более быстрые ответы, если пометю его как Silverlight, поскольку привязка данных должна работать одинаково. Я предполагаю, что это ошибка в WinRT, поэтому мне просто нужно найти обходной путь: (

Ответы [ 2 ]

0 голосов
/ 24 октября 2011

Я не уверен, что понял, почему вы хотите это сделать, но вы можете создать свойство, которое возвращает то, что вы хотите, от элемента в списке, например:

public string MyBindingProperty
{
    get { return MyList != null && MyList.Count > 0 ? MyList[0].MyProperty : "Error Text"; }
}

Тогда вы бы связались с MyBindingProperty:

<TextBlock Text="{Binding MyBindingProperty}" />

EDIT

Я ошибся, сказав, что вы не можете получить доступ к пунктам в списке - мой плохой. Ваша привязка должна выглядеть так:

<TextBlock Text="{Binding [0].MyProperty}" />

Если я тебе понадоблюсь, я буду в углу, наслаждаясь своим скромным пирогом.

0 голосов
/ 24 октября 2011

Я не эксперт по SL, но я думаю, что вы используете неправильный Grid объект;попробуйте с DataGrid следующим образом:

<data:DataGrid x:Name="targetDataGrid">
     <data:DataGrid.Columns>
         <data:DataGridTextColumn Header="MyProperty" 
             Binding="{Binding MyProperty}" />
     </data:DataGrid.Columns>
 </data:DataGrid>

также см. здесь для получения более подробной информации: Определение столбцов Silverlight DataGrid во время выполнения

Редактировать: затем идти следующим образом:

<Grid>
  <Grid.ColumnDefinitions>
  <ColumnDefinition />
  </Grid.ColumnDefinitions>
  <TextBlock Grid.Column="0" Text="{Binding MyProperty}" />
</Grid>

найдено здесь: http://msdn.microsoft.com/en-us/library/cc278072%28v=VS.95%29.aspx прокрутка дону статьи ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...