Свойство источника DatePicker не обновлено до нулевого - PullRequest
0 голосов
/ 15 ноября 2011

У меня есть WPF DatePicker, который используется в DataGridTemplateColumn.DatePicker связан со свойством с именем StartDate типа DateTime?(Nullable).Когда я выбираю DateText в средстве выбора DateTime и удаляю его, устанавливая для 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 в привязке к PropertyChanged в моем xaml, это будет работать.То есть, когда я уберу дату, он установит для свойства значение null.Тем не менее, PropertyChanged уже является DefaultUpdateSourceTrigger для DatePicker.SelectedDate, так почему же он изменяет поведение на явное объявление его в xaml?

1 Ответ

0 голосов
/ 15 ноября 2011

Значением по умолчанию UpdateSourceTrigger является PropertyChanged для большинства привязок, однако TextBoxes, включая DatePicker TextBoxes, являются одним из исключений.

Значение по умолчанию UpdateSourceTrigger для TextBox равно LostFocus, потому что, если вы печатаете кучу текста, вы обычно не хотите запускать событие PropertyChanged для каждой нажатой клавиши

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...