#wpf #silverlight #windows-phone-7
#wpf #silverlight #windows-phone-7
Вопрос:
List<Post>[] Postok;
public List<Post>[] MyProperty
{
get { return Postok; }
set { Postok = value; }
}
[DataContract]
public class Post
{
[DataMember]
public string _imageSourc { get; set; }
[DataMember]
public string _author { get; set; }
[DataMember]
public string _maintext { get; set; }
[DataMember]
public string _altext { get; set; }
[DataMember]
public string _href { get; set; }
}
<ListBox x:Name="sdemotivalo" ItemsSource="{Binding MyProperty[0]}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=_imageSourc}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Я хочу установить MyProperty [0] для ListBox. Но это ничего не показывает. Я искал ответ на эту проблему, но я его не нашел. Если вы знаете, пожалуйста, помогите мне.
Комментарии:
1. Почему вы используете массив списков (=список списков)? Я думаю, вам нужен только список … удалить []
Ответ №1:
Вам нужно установить DataContext
для вашего элемента управления или формы. Скорее всего, вы бы сделали это в корневом каталоге следующим образом:
<Grid x:Name="LayoutRoot" DataContext="{Binding MyClass}">
Предполагается, что это MyProperty
принадлежит экземпляру класса с именем MyClass
. Затем вы можете получить доступ к элементам MyClass
, включая MyProperty
. Затем вы бы установили ItemsSource
для своего ListBox
примерно так:
<ListBox x:Name="sdemotivalo" ItemsSource="{Binding MyProperty[0]}" >
В первой строке выше указано, что ваша форма должна просмотреть MyClass
, чтобы получить ее данные. Таким образом, когда вы говорите ItemsSource="{Binding MyProperty[0]}"
, вы говорите: «посмотрите на экземпляр класса, к которому вы привязаны ( MyClass
), и найдите свойство с именем MyProperty
«, после чего вы можете проиндексировать в MyProperty
и получить то, что вы хотите.
Мне любопытно, почему вы используете массив List<T>
— я не уверен, что когда-либо видел это.
Комментарии:
1. <ListBox x:Name=»sdemotivalo» ItemsSource=»{Привязка MyProperty[0]}»> <ListBox. ItemTemplate> <DataTemplate> <TextBlock Text=»{Путь привязки=_imagesource}» /> </DataTemplate> </ListBox. ItemTemplate> </ListBox> Все в порядке? ‘потому что в listbox ничего не отображается
2. Как вы настраиваете свой
DataContext
?3. <Сетка x:Name=»LayoutRoot» Background=»Прозрачный» DataContext=»{Основная страница привязки}»>
4. Не пытайтесь напрямую привязываться к вашему
xaml.cs
файлу. Создайте какой-нибудь класс для храненияMyProperty
и создайте экземпляр этого класса для использования в качестве вашегоDataContext
.
Ответ №2:
Имя общедоступного свойства — MyProperty, и вы привязываетесь к ListProp. Опубликуйте код, в котором вы инициализируете Postok и присваиваете значения.