我正在开发一个日历,我的日子就像这样对齐
<Label Grid.Row="1" Grid.Column="1" Content="{Binding Path=SundayLabel, FallbackValue=Sunday}" Style="{StaticResource ResourceKey=DayLabelStyle}" />
<custom:DayDisplay Grid.Row="2" Grid.Column="1" x:Name="SundayDisplay" />
<Label Grid.Row="1" Grid.Column="2" Content="{Binding Path=MondayLabel, FallbackValue=Monday}" Style="{StaticResource ResourceKey=DayLabelStyle}" />
<custom:DayDisplay Grid.Row="2" Grid.Column="2" x:Name="MondayDisplay" />
等等。 DayDisplay是一个自定义WPF控件。 包含所有theese DayDisplays的控件需要某种方式来设置具有DateTime的各个日期,最好是来自代码。
有没有办法在我的DayDisplay视图中公开自定义属性,所以我可以这样做:
<custom:DayDisplay Grid.Row="2" Grid.Column="2" x:Name="MondayDisplay" x:Day="{MondayDateTime}"/>
最好我想在Dictionary中存储所有自定义:DayDisplay对,并且如果可能的话也将它们自动生成。非常感谢任何帮助:)
谢谢, 尼古拉斯
答案 0 :(得分:1)
您应该在控件上公开DateTime依赖项属性,如下所示:
public DateTime Day
{
get { return (DateTime)GetValue(DayProperty); }
set { SetValue(DayProperty, value); }
}
// Using a DependencyProperty as the backing store for Day. This enables animation, styling, binding, etc...
public static readonly DependencyProperty DayProperty =
DependencyProperty.Register("Day", typeof(DateTime), typeof(DayOfWeek), new UIPropertyMetadata(DateTime.MinValue));
如果你想自动生成它,你应该做的是有一个包含你的dayControl的ItemsControl,如下所示:
<ItemsControl x:Name="DaysItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<custom:DayDisplay Day="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
然后从代码后面的DataBind:
DateTime[] week = new DateTime[] { new DateTime(2000,1,1), new DateTime(200,1,2) };
DayItemsControl.ItemsSource = week;