0

我的 MVVM 程序是一个媒体播放器,它使用媒体元素的自然持续时间属性来设置媒体时间线的持续时间。在我实现 MVVM 设计模式之前,我可以简单地把

    MyMediaTimeline.Duration = MyMediaElement.NaturalDuration;

在代码隐藏中。我是使用 MVVM 的新手,但我认为这不是根据 MVVM 设计模式执行此操作的正确方法。我相信 MediaElement.NaturalDuration 不是依赖属性,因此不能直接绑定。我是否需要以某种方式使其成为依赖属性?这会在 ViewModel 中编码吗?

4

1 回答 1

1

当我们需要使用 MVVM 实现与 UI 控件相关的此类功能时,我们有几个选择。一种是实现某种可以为我们实现此功能的服务或管理器类,另一种是使用Attached Properties. 在两个选项中,我相信第二个选项更适合这个问题。

但是,将事件处理程序添加到视图后面的代码中绝对没有错,即使使用 MVVM 也是如此。我不断看到新用户在使用 MVVM 时对做什么而不是使用背后的代码感到恐慌。这是对 MVVM 的常见误解。

如果您真的知道如何Attached Properties正确使用,那么我建议您使用其中的一个(或多个)来解决您的问题,否则我很乐意建议您使用后面的代码。请注意,如果您的视图模型正确地将数据绑定到您的视图,那么您可以从后面的代码中访问您的视图模型,如下所示:

TypeOfViewModel viewModel = (TypeOfViewModel)DataContext;
于 2013-09-16T16:14:53.543 回答