年份日历WPF

时间:2013-11-08 08:16:28

标签: wpf calendar wpf-controls

我需要WPF中的年历,即一个控件中的12个日历(每月一个)。这可以通过创建一个包含12个日历的新控件并禁用下一个/上一个按钮等来完成。

我的主要问题是,我需要允许用户选择多个范围日期,即使这些日期有两个不同的月份。例如,当用户点击1月20日,然后按住班次然后点击2月10日,必须选择1月20日到2月10日之间的日期。

有可能吗?

1 个答案:

答案 0 :(得分:1)

如果有足够的时间和精力,任何事情都是可能的,但是你建议的可能会花费你很多时间,以便允许用户以这种方式选择日期范围。

(在本次讨论中,我将假设您总是有365天的固定年份可供选择,即使可能是2013年11月 - 2014年10月。考虑动态范围会使一切变得更具挑战性)

如果您有多个日历,他们将不知道如何保持所选范围同步。如果您正在构建这个,那么要解决的第一件事就是生成一个只读年份日历,以便在给定一年后,突出显示所有日历中的选择部分。之后,您将处理简单的交互,例如,如果用户在一个日历中进行移位选择,那么您可以重复使用您的工作来显示您在上面执行的只读范围。但是,如果您希望用户能够跨多个日历拖动选择,那么您将更难找到它。将日志状态传递到日历上需要进行大量同步。

此时你可能会发现,拥有日历所涉及的工作可以更好地用于获取已经可以处理此控件的控件,例如devexpress,syncfusion等,甚至可以构建自己的日历。

就个人而言,我会使用两个日期下拉菜单来精确选择开始和停止的日期,然后在一年中有一个只读表示范围。如果这还不够,那么请看一下使用双滑块控件(搜索 WPF双滑块用于商业和开源选项)。这将为您提供一种简单的方法来拖动一年中的开始或结束日期。

您可以简单地使用上面的只读视图,甚至只是简单的边框来显示范围。将边界Margin.Left绑定到自年初/ 365 * totalWidth以来的天数,并将其宽度绑定到两个日期之间的天数/ 365 * totalWidth。

最后,您可以简单地将只读日历作为视图中唯一可见的组件,并将其与其他内容配对,以便在用户与其进行交互时进行选择。当鼠标在日历上点击时,可能会弹出这对下拉菜单。