年历WPF

年历WPF,wpf,calendar,wpf-controls,Wpf,Calendar,Wpf Controls,我需要一个WPF中的年日历,也就是说,在一个控件中有12个日历(每个月一个)。这可以通过创建一个包含12个日历的新控件并禁用下一个/上一个按钮来实现。。。等等 我的主要问题是,我需要允许用户选择多个日期范围,即使这些日期是两个不同的月份。例如,当用户在1月20日单击,然后按住shift键,然后在2月10日单击时,必须选择1月20日到2月10日之间的日期 可能吗 只要有足够的时间和精力,任何事情都是可能的,但是为了让用户能够以这种方式选择日期范围,您的建议可能会占用您大量的时间 (在本次讨论中,我

我需要一个WPF中的年日历,也就是说,在一个控件中有12个日历(每个月一个)。这可以通过创建一个包含12个日历的新控件并禁用下一个/上一个按钮来实现。。。等等

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


可能吗

只要有足够的时间和精力,任何事情都是可能的,但是为了让用户能够以这种方式选择日期范围,您的建议可能会占用您大量的时间

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

如果您有多个日历,它们将不知道如何保持选定范围的同步。如果您正在构建此日历,首先要解决的问题是生成一个只读的年度日历,以便在给定的一年中,突出显示所有日历中选定的部分。之后,您将处理简单的交互,例如,如果用户shift在一个日历中进行选择,那么您可以重用您的工作来显示上面所显示的只读范围。但是,如果您希望用户能够跨多个日历拖动选择,您会发现这要困难得多。在日历上传递鼠标的状态需要很好的同步

此时,您可能会发现,使用日历所涉及的工作可以更好地花费在获取一个已经可以处理此问题的控件(如devexpress、syncfusion等)上,甚至可以构建自己的控件上

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

您可以从上面简单地使用只读视图,甚至只使用一个简单的边框来显示范围。绑定边框边距。左键为年初以来的天数/365*totalWidth,并将其宽度绑定为两个日期之间的天数/365*totalWidth


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

当然是的,但是写出来会很痛苦,你需要做很多逻辑检查。。。为什么不使用AddRange方法,在这里您可以询问开始日期和结束日期,然后添加它们呢?我明白您的意思,看起来很不错。尽管如此,我还是想做一些更简单的事情(如果可能的话),比如连接datatriggers或类似的东西。谢谢你的回复。