#silverlight #xaml #binding #listbox
#silverlight #xaml #привязка #listbox
Вопрос:
В silverlight я пытаюсь создать listbox отчетов и пытаюсь отобразить параметры отчета в listbox в datatemplate внешнего списка отчетов.
Вот классы данных:
public class Report
{
public string Title { get; set; }
public string Description { get; set; }
public List<ReportParameter> Parameters = new List<ReportParameter>();
}
public class ReportParameter
{
public string Name { get; set; }
public string ParameterType { get; set; }
public bool Required { get; set; }
}
Вот XAML, который я пытаюсь использовать для этого:
<ListBox x:Name="lstReports">
<ListBox.ItemTemplate>
<DataTemplate>
<Border>
<StackPanel>
<TextBlock Text="{Binding Title}"/>
<ListBox ItemsSource="{Binding Parameters}" Height="60" Width="60">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Привязка к заголовку отчета работает, но внутреннее поле списка пусто для каждого из отчетов.
Список параметров заполнен.
Что я делаю не так?
Спасибо!
Ответ №1:
Ваш список «Параметры» является общедоступным полем, не является свойством, silverlight может привязываться только к свойствам, а не к полям. Попробуйте изменить свой класс на этот:
public class Report
{
public Report()
{
Parameters = new List<ReportParameter>();
}
public string Title { get; set; }
public string Description { get; set; }
public List<ReportParameter> Parameters { get; set; }
}
Это должно работать так, как вы этого хотите.
Комментарии:
1. Спасибо, Viggity! Сработало как по волшебству!