2011-09-07 27 views
1

我在wpf中有以下DataGrid。DatePicker是單向的,但我需要TwoWay

<DataGrid AutoGenerateColumns="False" Grid.Row="1" Name="adsGrid" ItemsSource="{Binding Path=Ads}" CanUserAddRows="False" CanUserDeleteRows="False" SelectionChanged="adsGrid_SelectionChanged"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="ID" Binding="{Binding Path=ID}" IsReadOnly="True" /> 
       <DataGridTextColumn Header="File" Binding="{Binding Path=FileName}" IsReadOnly="True" />     
       <DataGridTemplateColumn Header="Expiration date" IsReadOnly="True"> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <DatePicker SelectedDate="{Binding Path=ExpirationDate}" /> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 
       <DataGridTextColumn Header="Info" Width="100*" Binding="{Binding Path=Info}" /> 
      </DataGrid.Columns> 
     </DataGrid> 

問題是DateTime選取器不會更新相關對象,但會從中讀取值。我試過添加Mode = TwoWay,但它沒有幫助。其他屬性正確更新。

+1

當您在調試應用程序時更改日期選擇器的值時,輸出窗口是否會顯示任何內容? – Jon

+0

可空性會導致失誤。檢查DatePicker.SelectedDate和ExpirationDate屬性是否匹配。如果您在兩者之間使用任何轉換器,請確保其可雙向轉換。還要在綁定中添加「雙向」模式。 –

+0

@AngelWPF他們都是DateTime? – mersadk

回答

5

要調試這個我會嘗試:(?不是可爲空或的DateTimeOffset)

  1. 檢查到期日期屬性DateTime
  2. 設置UpdateSourceTrigger=PropertyChanged
  3. 添加一個轉換器,並查看是否該轉換器被稱爲
+0

它是可以爲空的,這是一個問題嗎?我試過用轉換器,它是從對象轉換爲wpf時調用的,但不是相反的方向。 – mersadk

+0

解決方案是將UpdateSourceTrigger = PropertyChanged添加到綁定 – mersadk

相關問題