2011-11-14 44 views
0

我有一個WPF DatePicker在DataGridTemplateColumn中使用。 DatePicker綁定到名爲StartDate類型DateTime的屬性? (可空)。當我在DateTime選擇器中選擇DateText並刪除它時,將SelectedDate設置爲null,StartDate屬性不會設置爲null。你知道爲什麼或如何使它將空值綁定到源和日期?DatePicker源屬性未更新爲空

編輯:這裏是我的代碼:

<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中聲明它?

+0

我有一個類似的問題。如果您刪除日期,然後從日期選擇器中選中日期選擇器,但它不會觸發setter所選日期綁定到 – stuicidle

回答

0

對於大多數綁定,默認UpdateSourceTriggerPropertyChanged,但是TextBoxes(包括DatePicker TextBoxes)是例外之一。

TextBox默認UpdateSourceTriggerLostFocus,因爲如果你輸入一串文字,你通常不希望火的每一個關鍵PropertyChanged事件按下

+0

謝謝Rachel,但我的意思是在它失去焦點後,屬性不會更新。 – xr280xr

+0

@ xr280xr你的意思是,如果你把它留在它的默認行爲,改變日期,然後擦除它,並點擊另一個控件的值爲'空'? (如果您使用按鍵來處理命令,它不會觸發'LostFocus'事件) – Rachel