Wpf DatePicker源属性未更新为null
我在DataGridTemplateColumn中使用了一个WPF日期选择器。DatePicker绑定到DateTime类型的名为StartDate的属性?可为空。当我在DateTime选择器中选择DateText并删除它时,将SelectedDate设置为null,StartDate属性没有设置为null。您知道为什么或者如何使它将空值绑定到源以及日期吗 编辑:这是我的代码:Wpf DatePicker源属性未更新为null,wpf,datagrid,datepicker,Wpf,Datagrid,Datepicker,我在DataGridTemplateColumn中使用了一个WPF日期选择器。DatePicker绑定到DateTime类型的名为StartDate的属性?可为空。当我在DateTime选择器中选择DateText并删除它时,将SelectedDate设置为null,StartDate属性没有设置为null。您知道为什么或者如何使它将空值绑定到源以及日期吗 编辑:这是我的代码: <DataGrid x:Name="dgCampaigns" Gr
<DataGrid x:Name="dgCampaigns"
Grid.Row="1"
RowHeight="22"
AutoGenerateColumns="False"
HeadersVisibility="Column"
CanUserSortColumns="True"
CanUserAddRows="False"
CanUserResizeColumns="True"
CanUserDeleteRows="False"
BorderThickness="1"
VerticalScrollBarVisibility="Auto" HorizontalAlignment="Left" Background="Transparent"
Margin="6,10,6,10" Height="Auto" VerticalAlignment="Top">
<DataGrid.Columns>
<DataGridTextColumn Header="Campaign Name" Binding="{Binding DislayName}" CanUserSort="True" SortMemberPath="DislayName"/>
<DataGridTemplateColumn Header="Families Created After" CanUserSort="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding StartDate, }" Visibility="{Binding Path=startDateEnabled, Converter={StaticResource boolVisibilityConverter}}" HorizontalAlignment="Left" VerticalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Enabled" CanUserSort="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Grid.Column="1" IsChecked="{Binding Enabled}" Tag="{Binding CampaignID}" Checked="CheckBox_Checked" Unchecked="CheckBox_Checked" HorizontalAlignment="Left" VerticalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
public System.Nullable<System.DateTime> StartDate {
get {
return this.startDateField;
}
set {
this.startDateField = value;
}
}
编辑:我取得了一些进步,但这仍然是一个谜。如果我在绑定中显式地将UpdateSourceTrigger设置为xaml中的PropertyChanged,它就可以工作。也就是说,当我清除日期时,它会将属性设置为null。但是,PropertyChanged已经是DatePicker.SelectedDate的首选项,那么为什么它会更改行为以在xaml中明确声明它呢?对于大多数绑定,默认的UpdateSourceTrigger是PropertyChanged,但是文本框(包括DatePicker文本框)是例外情况之一
文本框的默认UpdateSourceRigger是LostFocus,因为如果您键入一堆文本,通常不希望为每按一个键触发PropertyChanged事件谢谢Rachel,但我的意思是在它失去焦点后,属性不会更新。@xr280xr您的意思是如果您保持它的默认行为,请更改日期,然后将其删除并单击另一个控件。值是否为空?如果您使用按键来处理命令,它不会触发LostFocus事件,因为我遇到了类似的问题。如果删除日期,则从日期选择器中删除选项卡,所选日期会更改,但不会触发所选日期绑定到的设置器