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

时间:2012-01-31 00:14:51

标签: c# silverlight windows-phone-7 mvvm mvvm-light

嗨,基本上我已经能够将我的逻辑完全分离到视图模型中,除了一件事。我有一个按钮和两个可以应用于按钮的不同模板。基本上,当播放音频时,显示一个模板,而不显示另一个模板。当我使用后面的代码时这很简单,因为我可以访问页面的资源,而我所要做的就是相应地设置它。现在我的代码在VM中,虽然我不确定如何更改模板。

我想到的第一个想法是,可能会在需要时向视图发送消息以进行更改。这是唯一的方法吗?我确实看到WPF的触发器看起来非常好,因为你不必发送消息,并且后面的代码中没有代码。有人为此找到了解决方法吗?

1 个答案:

答案 0 :(得分:1)

您可以编写ValueConverter来查看public bool IsPlaying属性并将其转换为相应的模板。然后,您可以使用转换器作为翻译器将Button模板属性数据绑定到IsPlaying属性。

我还没有尝试使用模板,但是我已经使用它BitmapVisibility取得了巨大的成功,所以我很确定它可以在这里运行同样。

如果您之前没有使用过good intro to ValueConverter,请{{3}}。

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