2012-07-26 17 views
0

編程新手並需要一點幫助。我有一個用於Outlook加載項的WPF用戶控件,並且一切都在順利進行,直到我嘗試使用celleditingtemplate列中的日期選擇器的數據網格,但單元格模板列僅包含文本塊。這個想法是將文本塊綁定到數據源(工作正常),並且當用戶編輯列時,日期選擇器顯示並且用戶可以選擇日期。我根本無法弄清楚如何將選定日期的值發送到文本塊,並且我完全在我的智慧結尾。下面是帶有綁定的數據網格,包含以下字段的簡單SQL表:[Project],[Deadline],[DaystoDeadline],[Responibility],[ProcessCount],[TasksCompleted],[TasksRemaining]。任何援助將不勝感激。從datagrid中引用datepicker seleteddate

  <Grid> 
       <DataGrid AutoGenerateColumns="False" HorizontalAlignment="Left" Margin="6,0,0,0" Name="ProjectsGrid" ScrollViewer.CanContentScroll="True" VerticalAlignment="Top" VerticalScrollBarVisibility="Auto" ItemsSource="{Binding}" CanUserAddRows="False" CanUserDeleteRows="False"> 
        <DataGrid.Columns> 
         <DataGridTemplateColumn Header="Commands"> 
          <DataGridTemplateColumn.CellTemplate> 
           <DataTemplate> 
              <Button Click="Select_Button" Content="Select" Name="SelectButton" /> 
           </DataTemplate> 
          </DataGridTemplateColumn.CellTemplate> 
         </DataGridTemplateColumn> 
         <DataGridTextColumn Binding="{Binding Project}" Header="Project" IsReadOnly="True" FontFamily="Verdana" /> 
          <DataGridTemplateColumn Header="Deadline"> 
           <DataGridTemplateColumn.CellTemplate> 
            <DataTemplate> 
             <TextBlock Text="{Binding Deadline, StringFormat='yyyy/MM/dd'}" FontFamily="Verdana" x:Name="DeadlineTxt" /> 
            </DataTemplate> 
           </DataGridTemplateColumn.CellTemplate> 
           <DataGridTemplateColumn.CellEditingTemplate> 
            <DataTemplate> 
             <DatePicker SelectedDate="{Binding Deadline, StringFormat='yyyy/MM/dd'}" FontFamily="Verdana" x:Name="DeadlineDatePicker"> 
              <DatePicker.CalendarStyle> 
               <Style TargetType="Calendar"> 
                <Setter Property="DisplayMode" Value="Month"/> 
               </Style> 
              </DatePicker.CalendarStyle> 
             </DatePicker> 
            </DataTemplate> 
           </DataGridTemplateColumn.CellEditingTemplate> 
          </DataGridTemplateColumn> 
         <DataGridTextColumn Binding="{Binding DaystoDeadline}" Header="Days to Deadline" IsReadOnly="True" FontFamily="Verdana" /> 
         <DataGridTextColumn Binding="{Binding Responsibility}" Header="Responsibility" IsReadOnly="True" FontFamily="Verdana" /> 
         <DataGridTextColumn Binding="{Binding Processes}" Header="Processes" IsReadOnly="True" FontFamily="Verdana" /> 
         <DataGridTextColumn Binding="{Binding Completed}" Header="Completed" IsReadOnly="True" FontFamily="Verdana" /> 
         <DataGridTextColumn Binding="{Binding Remaining}" Header="Remaining" IsReadOnly="True" FontFamily="Verdana" /> 
        </DataGrid.Columns> 
       </DataGrid> 

回答

0

我會被取下控件的名稱在DataTemplatex:Name="DeadlineTxt"x:Name="DeadlineDatePicker")啓動和清除StringFormatSelectedDate:(SelectedDate="{Binding Deadline}"

  <DataGridTemplateColumn Header="Deadline"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Deadline, StringFormat='yyyy/MM/dd'}" FontFamily="Verdana" /> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
       <DataGridTemplateColumn.CellEditingTemplate> 
        <DataTemplate> 
         <DatePicker SelectedDate="{Binding Deadline}" FontFamily="Verdana" > 
          <DatePicker.CalendarStyle> 
           <Style TargetType="Calendar"> 
            <Setter Property="DisplayMode" Value="Month"/> 
           </Style> 
          </DatePicker.CalendarStyle> 
         </DatePicker> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellEditingTemplate> 
      </DataGridTemplateColumn> 
+0

薩爾瓦多,它的工作原理是是。我需要將選定的日期返回到文本塊,這是我目前遇到的問題。 – 2012-07-26 14:01:36

+0

好吧,我重新測試了我的代碼:當您在日期選擇器中選擇另一個日期時,它將更新截止日期字段,從而在離開單元格時更新文本塊。 – 2012-07-26 14:14:48

+0

非常感謝它的工作,正如我想要的。 – 2012-07-27 08:00:51