2012-07-26 5 views
0

프로그래밍에 익숙하지 않고 조금 도움이됩니다. 나는 WPF usercontrol을 Outlook Add-in에 사용했고, celleditingtemplate 열의 datepicker를 사용하여 DataGrid를 시도 할 때까지 모든 것이 순조롭게 진행되었지만 celltemplatecolumn에는 단순히 textblock이 있습니다. 아이디어는 데이터 소스에 바인드 된 텍스트 블록 (잘 작동합니다)을 사용자가 열을 편집 할 때 datepicker가 표시되고 사용자가 날짜를 선택할 수 있도록하는 것입니다. 나는 단순히 selecteddate에서 텍스트 블록으로 값을 보내는 방법을 알아낼 수 없으며 완전히 끝내고 있습니다. 아래는 바인딩이있는 DataGrid, [Project], [Deadline], [DaystoDeadline], [Responsibility], [ProcessCount], [TasksCompleted], [TasksRemaining] 필드가있는 간단한 SQL 테이블입니다. 어떤 도움이라도 대단히 감사하겠습니다.datepicker를 내부 DataGrid에서 참조하십시오.

  <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
나는 DataTemplate ( x:Name="DeadlineTxt" x:Name="DeadlineDatePicker")에서 컨트롤의 이름을 복용하여 시작하고 SelectedDate에서 StringFormat 제거 할

: 살바도르, 그것은으로 작동

  <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

이다 (SelectedDate="{Binding Deadline}")를. 선택한 날짜를 현재 문제가되는 텍스트 블록으로 다시 참조해야합니다. –

+0

글쎄, 내 코드를 다시 테스트했다. datepicker에서 다른 날짜를 선택하면 Deadline 필드가 업데이트되므로 셀을 떠날 때 텍스트 블록이 업데이트된다. –

+0

많은 분들께 감사드립니다. –

관련 문제