如何在WP7中更改视图模型中的控件模板

本文关键字:模型 控件 视图 WP7 | 更新日期: 2023-09-27 18:21:52

嗨,基本上我已经能够将我的逻辑完全分离到一个视图模型中,只有一件事例外。我有一个按钮和两个可以应用于该按钮的不同模板。基本上,当播放音频时,显示一个模板,而当不播放时,显示另一个模板。当我使用背后的代码时,这很容易,因为我可以访问页面的资源,我所要做的就是相应地设置它。现在我的代码已经在虚拟机中了,尽管我真的不知道如何更改模板。

我想到的第一个想法是,也许在需要的时候给视图发送一条信息来改变它。这是唯一的方法吗?我确实看到WPF有触发器,这看起来很好,因为你不必发送消息,而且后面的代码中没有代码。有人找到解决办法了吗?

如何在WP7中更改视图模型中的控件模板

您可能可以编写一个ValueConverter,它将查看public bool IsPlaying属性并将其转换为适当的模板。然后,您可以使用转换器作为转换器,将Button模板属性数据绑定到IsPlaying属性。

我还没有在模板中尝试过,但我已经在BitmapVisibility中成功地使用了它,所以我很确定它在这里也会起作用。

如果你以前没有使用过ValueConverter,这里有一个很好的介绍。

也就是说,在这种情况下,消息传递并不是一个可怕的解决方案。有时,有些代码只想存在于codebehind文件中。动画开始/停止代码是另一个出现在脑海中的例子。