1

WPF で年間カレンダーが必要です。つまり、1 つのコントロールに 12 個のカレンダー (1 か月に 1 個) が必要です。これは、12 個のカレンダーを持つ新しいコントロールを作成し、次/前のボタンを無効にすることで実現できます。

私の主な問題は、これらの日付が2つの異なる月であっても、ユーザーが複数の範囲の日付を選択できるようにする必要があることです。たとえば、ユーザーが 1 月 20 日をクリックし、Shift キーを押しながら 2 月 10 日をクリックした場合、1 月 20 日から 2 月 10 日までの日付を選択する必要があります。

出来ますか?

4

1 に答える 1

2

十分な時間と労力があれば、何でも可能ですが、ユーザーがこの方法で日付範囲を選択できるようにするために、あなたが提案していることは多くの時間を費やす可能性があります.

(この議論では、2013 年 11 月から 2014 年 10 月までの間であっても、常に 365 日という固定の年があると仮定します。ダイナミック レンジを考慮すると、すべてがさらに困難になります)

複数のカレンダーがある場合、選択した範囲を同期する方法がわかりません。これを作成する場合、最初に取り組まなければならないことは、読み取り専用の年カレンダーを作成して、特定の年に、すべてのカレンダーで選択した部分を強調表示することです。その後、ユーザーが 1 つのカレンダーで Shift キーを押しながら選択するなどの単純な操作に取り組み、上記で行った読み取り専用範囲を表示する際に作業を再利用できます。ただし、ユーザーが複数のカレンダー間で選択をドラッグできるようにしたい場合は、はるかに難しくなります。カレンダー間でマウスの状態を渡すには、かなりの同期が必要です。

この時点で、カレンダーの作成に関連する作業は、devexpress、syncfusion など、既にこれを処理できるコントロールを取得するか、独自のコントロールを構築することに費やす方がよいことに気付くかもしれません。

個人的には、2 つの日付ドロップダウンを使用して開始日と終了日を正確に選択し、その年の範囲を読み取り専用で表示します。それでも不十分な場合は、デュアル スライダー コントロールの使用を検討してください (商用およびオープン ソースのオプションについては、WPF デュアル スライダーを検索してください)。これにより、その年の開始日または終了日をドラッグする簡単な方法が得られます。

上から読み取り専用ビューを使用するだけでなく、単純な境界線を使用して範囲を表示することもできます。境界線 Margin.Left を年の開始からの日数 / 365 * totalWidth にバインドし、その幅を 2 ​​つの日付間の日数 /365 * totalWidth にバインドします。

最後に、読み取り専用のカレンダーをビュー上の唯一の可視コンポーネントとして保持し、それらを他のものと組み合わせて、ユーザーが操作するときに選択を行うことができます。カレンダーの上でマウスをクリックすると、ドロップダウンのペアがポップアップするかもしれません。

于 2013-11-08T09:31:36.103 に答える