【问题标题】:How to change control template from the view model in WP7?如何从 WP7 中的视图模型更改控制模板?
【发布时间】:2012-01-31 00:14:51
【问题描述】:

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

首先想到的可能是在需要时向视图发送消息以更改它。这是唯一的方法吗?我确实看到 WPF 有看起来很不错的触发器,因为您不必发送消息,并且后面的代码中也没有放置任何代码。有没有人找到解决这个问题的方法?

【问题讨论】:

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


    【解决方案1】:

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

    我还没有在模板上尝试过这个,但我在BitmapVisibility 上使用它取得了巨大的成功,所以我很确定它也可以在这里工作。

    这是good intro to ValueConverter,如果您以前没有使用过的话。

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

    【讨论】:

      猜你喜欢
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2015-09-30
      • 1970-01-01
      相关资源
      最近更新 更多