WPF 日历:绑定到 MVVM 命令?

发布于 2024-09-15 05:38:54 字数 527 浏览 3 评论 0原文

我正在将 WPF 日历连接到 MVVM 视图模型。我不确定如何将日期选择和月份更改绑定到 MVVM ICommand 对象。例如,要处理选定的日期更改,我将在 XAML 中将什么对象绑定到视图模型中相应的命令属性?

据我所知,我被代码隐藏中的事件处理所困。例如,检测日期选择更改的唯一方法似乎是编写 SelectedDatesChanged 事件处理程序。我可以从事件处理程序调用视图模型中的命令属性,如下所示:

private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
{
    var viewModel = (CalendarViewModel) DataContext;
    viewModel.GetDateNotes.Execute();
}

但我感觉到该方法有一种代码味道,除非没有更好的方法可用。谁能告诉我如何直接从 XAML 将 WPF 日历绑定到 MVVM 命令?有没有比我正在采取的方法更好的方法?感谢您的帮助。

I am wiring up a WPF calendar to an MVVM view model. I'm not sure how to bind date selections and month changes to MVVM ICommand objects. For example to process a selected date change, what object would I bind in XAML to the appropriate command property in my view model?

As nearly as I can tell, I am stuck with event handling in code-behind. For example, it looks like the only way to detect a date selection change is to write a SelectedDatesChanged event handler. I can invoke the command property in my view model from the event handler, like this:

private void Calendar_SelectedDatesChanged(object sender, SelectionChangedEventArgs e)
{
    var viewModel = (CalendarViewModel) DataContext;
    viewModel.GetDateNotes.Execute();
}

But I sense a code smell to that approach, unless there is no better approach available. Can anyone tell me how to bind a WPF Calendar to MVVM commands directly from XAML? Is there a better approach than the one I am taking? Thanks for your help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

铜锣湾横着走 2024-09-22 05:38:54

您的虚拟机中是否没有绑定到日历并引发 PropertyChanged 的​​ DateTime 属性?如果是这样,您不能监视内部更改的属性或在 setter 中编写代码以便您知道视图何时更改了其值吗?

Wouldn't you have a DateTime property in your VM that is bound to the calendar and that raises PropertyChanged? If so, can't you watch for property changed internally or write code in your setter so that you know when the view has changed its value?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文