我有一个ViewModel,它包含一个Boolean属性,告诉你用户是否已经过身份验证。
我有一个WrapPanel,它绑定到一组配置文件。这些配置文件的DataTemplate有一个图标 - 一个用于未经过身份验证的用户的挂锁和用于验证用户的打开挂锁。理想情况下,这些将绑定到ViewModel上的布尔值,但模板的DataContext是各个配置文件对象。
我试过了,
Source
选择器设置为specified here,尽管看起来Windows Phone 7不支持x:Reference
containerLocator
)Style.Trigger
但Windows Phone 7不支持这些Image
元素答案 0 :(得分:0)
评论后编辑:WP7不支持样式触发器。但如果有人在以下版本中寻找这个答案,我会在下面回复:
我会使用Style Trigger
here来动态更新图标Source
属性 - 作为DataTemplate
风格的一部分,这样您就可以获得抓住你的Image
。
答案 1 :(得分:0)
我发现基于an answer by Damian Antonowicz工作但没有实现他使用的控制方法的完全反转的一种方法如下,
创建一个部分类,它解析为视图模型命名空间下的视图模型实例,例如
public partial class ViewModelInstanceLocator
{
public AppViewModel AppViewModel // Or whatever the type of your view-model is ...
{
get
{
return App.VM; // Or wherever your view model instance is ...
}
}
}
将XAML页面中的另一半定义为资源,以便将其称为静态资源,我在App.xaml
中执行此操作,以便可以在任何地方引用它,
<ResourceDictionary>
<viewmodel:ViewModelInstanceLocator x:Key="ViewModelInstanceLocator" />
...
</ResourceDictionary>
如果还没有对视图模型命名空间的引用,则可能需要包含相关的命名空间,例如在顶部,
xmlns:viewmodel="clr-namespace:MyAppNamespace.ViewModel"
最后要按如下方式绑定到视图模型,
{Binding AppViewModel.SomeProperty, Source={StaticResource ViewModelInstanceLocator}}
绑定更新像往常一样,就像通过DataContext引用了视图模型实例一样。但是,它不适用于设计时数据。