0

我目前有一个绑定到 ObservableCollection 的组合框

    <ComboBox ItemsSource="{Binding Past}" DisplayMemberPath="Date" IsSynchronizedWithCurrentItem="True"/>

使用“IsSynchronizedWithCurrentItem”,它与一组标签“同步”,这些标签在一组标签中显示以下数据,例如:

    <Label DataContext="{Binding SelectedDate}" Content="{Binding Minimum}" />

由于使用 DatePicker(如 WPF 工具包之一,http ://wpf.codeplex.com/)而不是包含超过 300 个日期的组合框来选择日期要容易得多,因此有没有办法设置类似' IsSynchronizedWithCurrentItem' 以便 DatePicker 可以控制“当前日期”?

谢谢

4

1 回答 1

1

我通过在我的视图模型中创建一个“CurrentDate”属性解决了这个问题:

    public DateTime CurrentDate
    {
        get { return (this.collectionView.CurrentItem as PastItem).Date; }
        set 
        { 
            this.collectionView.MoveCurrentTo(Past.Where(PastItem => PastItem.Date == Convert.ToDateTime(value)).FirstOrDefault()); 
        }
    }

然后为第一个和最后一个日期创建两个属性:

    public DateTime FirstDate
    {
        get { return this.Past.FirstOrDefault().Date; }
    }
    public DateTime LastDate
    {
        get { return this.Past.LastOrDefault().Date; }
    }

然后使用 DatePicker 绑定到这些属性:

    <wpf:DatePicker SelectedDate="{Binding CurrentDate}" DisplayDateStart="{Binding FirstDate, Mode=OneWay}" DisplayDateEnd="{Binding LastDate, Mode=OneWay}" />

这意味着 DatePicker 将仅限于第一个和最后一个日期,并且可以选择一个与详细信息相关联的日期。

于 2009-12-24T01:48:07.933 回答