我創建了一個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