- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
原始用例:
这是我试图解决的一个可能用例:
预期:日历显示现在的日期
实际:(仅在 SelectedDate 上绑定(bind))日历仅移动其选定日期,但继续显示先前选定的月份
我的解决方案:
在 MVVM 场景中,我展示了一个 Calendar
控件,其 SelectedDate 绑定(bind)到我的 ViewModel 中的一个 SelectedDate
属性。我的 VM 中的属性在设置时触发它的 PropertyChanged
事件。
我的 VM 中的选定日期也可以从我的代码中的其他部分设置,所以我希望我的日历始终显示选定的日期(例如,当另一个月份被设置为选定日期时,我希望我的日历切换到那个月)。为了获得这种行为,我还将我日历的 DisplayDate
属性绑定(bind)到我的 SelectedDate 属性,这给了我预期的行为,除非我点击上个月或下个月的灰色日期。
这是我的 XAML 日历:
<Calendar SelectedDate="{Binding Path=SelectedDate}" DisplayDate="{Binding Path=SelectedDate}" />
这是我的 ViewModel 中的 SelectedDate
属性(实现 INotifyPropertyChanged
)
public DateTime SelectedDate
{
get
{
return selectedDate;
}
set
{
selectedDate = value;
this.PropertyChanged(this, new PropertyChangedEventArgs("SelectedDate"));
}
}
解决方案的问题:
显然,单击灰色日期会导致 SelectedDate
在鼠标按下时设置,在鼠标松开时再次设置,这会导致选择两个月后的日期。
有没有更好的方法来实现这种行为?或者我可以解决 DisplayDate 问题(没有太多黑客攻击,这意味着代码隐藏中没有/尽可能少的代码)?
我真正想要的是 SelecteDate
属性,它也具有 DisplayDate
属性的行为:)
感谢您的帮助!
最佳答案
我刚刚遇到这个问题,偶然发现了这个答案,虽然它有效,但我进一步解构并发现解决方案非常简单。只需将 DisplayDate
绑定(bind)为 Mode=OneTime
。不需要其他任何东西。
DisplayDate="{Binding SelectedDate, Mode=OneTime, UpdateSourceTrigger=PropertyChanged}"
SelectedDate="{Binding SelectedDate, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
关于c# - 日历绑定(bind) SelectedDate 和 DisplayDate : gray dates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8770181/
当 DatePicker 在 ControlTemplate 中时,DisplayDate 似乎没有正确绑定(bind)。 这就是我通过 MVVM 将 DisplayDate 绑定(bind)到 Da
原始用例: 这是我试图解决的一个可能用例: 用户打开我的日历设置为现在日期的页面 用户选择几个月前的日期 用户刷新页面,导致虚拟机中的选定日期重置为当前日期 预期:日历显示现在的日期 实际:(仅在 S
我是一名优秀的程序员,十分优秀!