【问题标题】:Obtaining value from Calendar control without selecting a day在不选择日期的情况下从日历控件中获取值
【发布时间】:2015-06-09 12:18:32
【问题描述】:

有没有办法(使用 Visual Studio WPF 中的日历控件)我可以获得一个值,而无需在控件中实际选择一天。

例如,我有一个客户希望日历的 DisplayMode = Year。 现在假设他们在控制范围内选择了三月份。这会将 DisplayMode 更改为 Month 并且不会设置任何值,直到他们在控件中选择该月中的一天。

有没有一种方法可以获得年份和月份并将其设置为一个值,而无需他们实际选择一天?因为在这种情况下,日子并不重要。

我发现了一些不涉及使用 Calendar 控件或 DatePicker 的解决方法,但我想继续将这些控件用于 UI。

【问题讨论】:

  • 澄清一下 - 只使用日历,而不是 DatePicker?
  • 抱歉,我正在使用日历控制器。 @AaronThomas

标签: c# wpf calendar wpf-controls


【解决方案1】:

您需要创建一个 DisplayModeChanged 事件并相应地更改模式:

private DateTime newdate = DateTime.Now;

private void Window_Loaded(object sender, RoutedEventArgs e)
{
   calctl.SelectedDate = DateTime.Now;
   calctl.DisplayMode = System.Windows.Controls.CalendarMode.Year;
}
private void calctl_DisplayModeChanged(object sender, CalendarModeChangedEventArgs e)
{
        if (calctl.DisplayMode == System.Windows.Controls.CalendarMode.Month)
        {
             newdate = calctl.DisplayDate;
             calctl.DisplayMode = System.Windows.Controls.CalendarMode.Year;
        }
}

这将允许您更改月份和/或年份,而不必担心日期。 您需要将初始显示模式设置为月份

【讨论】:

  • 我在发帖前已经尝试过了,但你无法从中获得价值。是的,您正在为推进到月份的 DisplayMode 的问题提供解决方案,但如果仅选择月份,您实际上无法从 SelectedDate 获得任何值。例如,如果我只选择了三月份。如果我执行 string theDate = calct1.SelectedItem.ToString(); 则无法获得任何值;因为没有选择一天。
  • 如果有什么方法我可以在选择月份后自动选择一天。有什么想法吗?
  • 我已经更改了代码,以便您拥有一个名为 newdate 的日期时间变量,该变量将始终具有当前选定的月份和年份(因为日期并不重要)
  • 请注意,还要确保日历属性中的显示模式最初设置为月份。
猜你喜欢
  • 1970-01-01
  • 2018-04-23
  • 2018-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 1970-01-01
相关资源
最近更新 更多