嗨,基本上我已经能够将我的逻辑完全分离到视图模型中,除了一件事。我有一个按钮和两个可以应用于按钮的不同模板。基本上,当播放音频时,显示一个模板,而不显示另一个模板。当我使用后面的代码时这很简单,因为我可以访问页面的资源,而我所要做的就是相应地设置它。现在我的代码在VM中,虽然我不确定如何更改模板。
我想到的第一个想法是,可能会在需要时向视图发送消息以进行更改。这是唯一的方法吗?我确实看到WPF的触发器看起来非常好,因为你不必发送消息,并且后面的代码中没有代码。有人为此找到了解决方法吗?
答案 0 :(得分:1)
您可以编写ValueConverter
来查看public bool IsPlaying
属性并将其转换为相应的模板。然后,您可以使用转换器作为翻译器将Button
模板属性数据绑定到IsPlaying
属性。
我还没有尝试使用模板,但是我已经使用它Bitmap
和Visibility
取得了巨大的成功,所以我很确定它可以在这里运行同样。
如果您之前没有使用过good intro to ValueConverter
,请{{3}}。
也就是说,在这种情况下,消息传递并不是一个如此可怕的解决方案。有时会有代码只想存在于代码隐藏文件中。动画开始/停止代码是另一个想到的例子。