WPF DatePicker DisplayDate绑定在DataGrid / DataTemplate / ControlTemplate中不起作用

时间:2015-04-29 07:12:55

标签: wpf datagrid datepicker datatemplate controltemplate

似乎当datepiceker在datagrid或datatemplate中时,wpf DatePicker的DisplayDate绑定不起作用。

以下是示例代码

<DataGrid x:Name="grid" AutoGenerateColumns="False" IsReadOnly="True">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="StartDate" MinWidth="155">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <DatePicker SelectedDate="{Binding Path=StartDate}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

            <DataGridTemplateColumn Header="EndDate" MinWidth="155">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>

                        <DatePicker SelectedDate="{Binding Path=EndDate}" DisplayDate="{Binding Path=StartDate}"/>

                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

public class Model
{
    public DateTime? StartDate { get; set; }
    public DateTime? EndDate { get; set; }
}

显示日期停留在当前日期。无论开始日期是什么。 我尝试设置绑定模式等,但它不起作用。 可能有什么不对?

注意:虽然初始绑定无关紧要,但INotifyPropertyChanged是用原始代码实现的。

1 个答案:

答案 0 :(得分:0)

https://connect.microsoft.com/VisualStudio/feedback/details/1291078

  <DatePicker DisplayDate={Binding Path=DisplayDate} Loaded="DatePicker_Loaded" />

并添加到代码中:

 private void DatePicker_Loaded(object sender, RoutedEventArgs e)
 {
             DatePicker dp = sender as DatePicker;
             if (dp != null)
             {
                     dp.ClearValue(DatePicker.DisplayDateProperty);
             }
 }