【发布时间】:2011-01-30 07:47:19
【问题描述】:
我有一个 ItemsControl,其中包含另一个 ItemsControl。 这意味着,对于父列表中的每个项目,我想显示子列表中的所有项目。
所以 Xaml 是这样的(我忽略了一些 DataTemplate)"
<ItemsControl x:Name="dayPanel" Grid.Column="1">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<ItemsControl x:Name="dayHours" Grid.Row="1" ItemsSource={Binding HourItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
现在在代码后面,我创建了一个创建天列表的类,并且每一天都包含一个小时列表。 所以我得到这样的东西:
public WeekPanel()
{
InitializeComponent();
dayPanel.ItemsSource = new Dayx().CreateDays();
}
所以.. 我在代码中定义的第一部分工作正常。 但是子 ItemsControl 没有被填充。 我想将它绑定到属性:HourItems 我该怎么做?
编辑: 好的,问题是 HourItems 属性被定义为:
Public List<Hour> HourItem {get; set;}
但当我将其更改为:
public List<Hour> HourItems
{
get { return hourItems; }
set { hourItems = value; }
}
有什么不同使它起作用?
【问题讨论】:
-
据我所知,唯一的区别是拼写。是不是打错字了?
-
除了拼写错误(
HourItem与HourItems)之外,唯一的区别是一个是自动属性,而另一个是具有支持(希望是私有)成员的常规属性。 -
那么为什么 auto 属性不起作用?
标签: c# silverlight data-binding itemscontrol