我有一个WPF Datagrid,其中一列是日期列.
所以我使用了DataTemplateColumn作为Follows
<my:DataGridTemplateColumn
CellTemplate="{StaticResource EffDateDateTimePickerControl}"
CellEditingTemplate="{StaticResource addrEffDate}"
Header="Effective Date"/>
Run Code Online (Sandbox Code Playgroud)
在我的资源文件中,我编写了以下代码:
<Style TargetType="{x:Type my:Calendar}" x:Key="CalenderControlTemplate">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="my:Calendar" >
<my:CalendarItem Name="myCalendarItem"
Background="White"
BorderBrush="Black"
BorderThickness="1"
VerticalAlignment="Center" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<DataTemplate x:Key="EffDateDateTimePickerControl">
<Label x:Name="lblEffDate" Content="{Binding effectiveDate,Mode=TwoWay}" ></Label>
</DataTemplate>
<DataTemplate x:Key="addrEffDate">
<my:DatePicker x:Name="dpEffDate" Text="{Binding Path=effectiveDate,Mode=TwoWay}"
SelectedDate="{Binding Now}" DisplayDateStart="{Binding Now}"
CalendarStyle="{DynamicResource CalenderControlTemplate}" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
问题是,当我点击DatePicker控件时,默认日期设置为1/1/0001?
如何设置我的日期选择器设置为当前日期.
Abe*_*cht 19
除非你的DataContext
被叫人有财产,否则你Now
的Bindings
意志就会失败.相反,您应该使用如下{x:Static}
语法:
<DataTemplate x:Key="addrEffDate">
<my:DatePicker x:Name="dpEffDate" Text="{Binding Path=effectiveDate,Mode=TwoWay}"
SelectedDate="{x:Static sys:DateTime.Now}" DisplayDateStart="{x:Static sys:DateTime.Now}"
CalendarStyle="{DynamicResource CalenderControlTemplate}" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
由于DateTime
不在标准XAML命名空间中,因此需要向根元素添加xmlns声明:
<UserControl xmlns:sys="clr-namespace:System;assembly=mscorlib" ...
Run Code Online (Sandbox Code Playgroud)
我认为你需要更换
DisplayDateStart
Run Code Online (Sandbox Code Playgroud)
和
DisplayDate
Run Code Online (Sandbox Code Playgroud)
因为DisplayDateStart
:(来自 MSDN)
获取或设置要显示的第一个日期。
不是要显示的日期。
归档时间: |
|
查看次数: |
31842 次 |
最近记录: |