Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf DatePicker源属性未更新为null_Wpf_Datagrid_Datepicker - Fatal编程技术网

Wpf DatePicker源属性未更新为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

我在DataGridTemplateColumn中使用了一个WPF日期选择器。DatePicker绑定到DateTime类型的名为StartDate的属性?可为空。当我在DateTime选择器中选择DateText并删除它时,将SelectedDate设置为null,StartDate属性没有设置为null。您知道为什么或者如何使它将空值绑定到源以及日期吗

编辑:这是我的代码:

<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事件,因为我遇到了类似的问题。如果删除日期,则从日期选择器中删除选项卡,所选日期会更改,但不会触发所选日期绑定到的设置器