我创建了一个Day
类:如何将依赖项属性绑定到WPF中的控件?
public class Day
{
public int DayOfMonth
{
get { return dayOfMonth; }
}
public List<Entry> CalendarDayItems
{
get { return calendarDayItems; }
set { calendarDayItems = value; }
}
private DateTime date;
private int dayOfMonth;
private List<Entry> calendarDayItems;
public Day(DateTime date, List<Entry> entries)
{
this.date = date;
this.dayOfMonth = date.Day;
this.calendarDayItems = entries;
}
}
接下来,我创建了一个WPF UserControl
为此,我想天收集绑定到ItemsControl
。我创建了一个依赖项属性ObservableCollection<Day> Days
,它绑定到ItemsControl
。这里是XAML:
<UserControl ... Name="CalendarMonthViewControl">
...
<ItemsControl
ItemsSource="{Binding ElementName=CalendarMonthViewControl, Path=Days}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Rows="6" Columns="7" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="Day">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<!-- The following two bindings don't work -->
<TextBlock
Grid.Column="0"
Text="{Binding Path=DayOfMonth}" />
<ItemsControl
Grid.Column="1"
ItemsSource="{Binding Path=CalendarDayItems}">
</ItemsControl>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
...
我有几个问题:
- 我使用的正确方法到dependecy属性绑定到
ItemsControl
,即是它推荐给命名控件,然后引用它是一个有约束力的来源? - 主要问题是
TextBlock
和第二个ItemsControl
将分别不与DayOfMonth
和CalendarDayItems
类别的属性绑定。
@Boris当你说“不会绑定”,你的意思是你没有看到这些属性的初始值(并且VS的输出窗口显示绑定错误),或者没有显示对这些属性的更改? – grantnz 2011-03-28 02:04:26
@grantnz我的意思是当我运行应用程序时,'TextBlock'和'ItemsControl'没有显示任何数据,'DayOfMonth'值和'CalendarDayItems'列表没有显示。他们只是空白的,但没有错误或例外。 – Boris 2011-03-28 02:10:32
就好像绑定尝试在控件上找到那些属性,而不是在集合中的“日”项...... – Boris 2011-03-28 02:11:36