DataGridTemplateColumnでWPF DatePickerが使用されています。 DatePickerは、DateTime型のStartDateという名前のプロパティにバインドされていますか? (Nullable)。 DateTimeピッカーでDateTextを選択して削除し、SelectedDateをnullに設定すると、StartDateプロパティがnullに設定されていません。なぜ、どのようにして日付と同様にソースにNULL値をバインドさせるのか分かっていますか?DatePickerのソースプロパティが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のためにDefaultUpdateSourceTriggerです。なぜそれが動作を明示的に変更するのですか?xamlで宣言しますか?
を押しました。日付を削除して日付ピッカーからタブを外した場合、選択した日付は変更されますが、選択された日付はバインダーに記録されません – stuicidle