0

現在、ObservableCollection にバインドされたコンボボックスがあります

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

「IsSynchronizedWithCurrentItem」を使用して、次のようなラベルのセットで以下のデータを表示するラベルのセットと「同期」します。

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

300 を超える日付が含まれるコンボボックスではなく、DatePicker (WPF Toolkit のもの、http://wpf.codeplex.com/など) を使用して日付を選択する方がはるかに簡単なので、「 DatePicker が「現在の日付」を制御できるように IsSynchronizedWithCurrentItem を使用しますか?

ありがとうございました

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()); 
        }
    }

最初と最後の日付の 2 つのプロパティを作成します。

    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 に答える