首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >日历绑定SelectedDate和DisplayDate:灰色日期

日历绑定SelectedDate和DisplayDate:灰色日期
EN

Stack Overflow用户
提问于 2012-01-07 13:55:20
回答 2查看 7.2K关注 0票数 3

原始用例:

这是我试图解决的一个可能的用例:

  1. 用户打开页面时,将“我的日历”设置为“现在日期”( now date
  2. User ),用户选择一个日期,
  3. 用户会在几个月后刷新该页面,从而将VM中选定的日期重置为“现在日期”( now date

)。

预期:日历显示现在的日期

实际:(仅在SelectedDate上绑定)日历只移动其选定的日期,但始终显示先前选定的月份

我的解决方案:

在MVVM场景中,我展示了一个Calendar控件,它的SelectedDate绑定到SelectedDate中的SelectedDate属性。我的VM中的属性在设置时触发它的PropertyChanged事件。

VM中的选定日期也可以从代码中的其他部分中设置,因此我希望我的日历总是显示选定的日期(例如,当另一个月被设置为选定的日期时,我希望我的日历切换到那个月)。为了获得这种行为,我还将日历的DisplayDate属性绑定到我的SelectedDate属性,这给出了预期的行为,除非我单击前一个月或下个月的灰色日期。

这是我在XAML中的日历:

代码语言:javascript
运行
复制
<Calendar SelectedDate="{Binding Path=SelectedDate}" DisplayDate="{Binding Path=SelectedDate}" />

这是我的SelectedDate中的ViewModel属性(实现INotifyPropertyChanged)

代码语言:javascript
运行
复制
    public DateTime SelectedDate
    {
        get 
        { 
            return selectedDate; 
        }
        set 
        { 
            selectedDate = value;
            this.PropertyChanged(this, new PropertyChangedEventArgs("SelectedDate"));
        }
    }

问题的解决方案:

显然,单击灰色日期会导致鼠标向下设置SelectedDate,并再次设置鼠标向上,这将导致选择两个月后的日期。

有更好的方法来实现这种行为吗?或者我可以修复DisplayDate问题(没有太多的黑客攻击,意味着后面的代码中没有/尽可能少的代码)?

我真正需要的是一个SelecteDate属性,它也具有DisplayDate属性的行为:)

谢谢你的帮助!

EN

Stack Overflow用户

回答已采纳

发布于 2012-02-03 07:48:29

我现在决定修复它的方式在我后面的代码中,在日历的加载事件上:

代码语言:javascript
运行
复制
private void CalendarLoaded(object sender, RoutedEventArgs e)
{
    if (this.ViewStartCalendar.SelectedDate.HasValue)
    {
        this.ViewStartCalendar.DisplayDate = this.ViewStartCalendar.SelectedDate.Value;
    }
}

我宁愿在XAML或视图模型中这样做,但我可以接受这个解决方案。

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8770181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档