Windows phone 7 如何基于Windows Phone 7中页面ViewModel的属性更改数据模板?

Windows phone 7 如何基于Windows Phone 7中页面ViewModel的属性更改数据模板?,windows-phone-7,xaml,binding,Windows Phone 7,Xaml,Binding,我有一个ViewModel,它包含一个布尔属性,告诉您用户是否已通过身份验证 我有一个WrapPanel,它绑定到一组配置文件。这些配置文件的DataTemplate有一个图标—当用户未通过身份验证时为关闭的挂锁,当用户通过身份验证时为打开的挂锁。理想情况下,这些将绑定到ViewModel上的布尔值,但模板的DataContext是单个概要文件对象 我试过了 将绑定中的源选择器设置为Windows Phone 7不支持x:Reference 我也尝试了containerLocator,但在我的对

我有一个ViewModel,它包含一个布尔属性,告诉您用户是否已通过身份验证

我有一个WrapPanel,它绑定到一组配置文件。这些配置文件的DataTemplate有一个图标—当用户未通过身份验证时为关闭的挂锁,当用户通过身份验证时为打开的挂锁。理想情况下,这些将绑定到ViewModel上的布尔值,但模板的DataContext是单个概要文件对象

我试过了

将绑定中的源选择器设置为Windows Phone 7不支持x:Reference 我也尝试了containerLocator,但在我的对象上找不到 我尝试应用Style.Trigger,但Windows Phone 7不支持这些 我还尝试访问代码隐藏中的XAML元素,并在事件触发器上以编程方式进行更新,但是我无法在DataTemplate中获得Image元素的句柄 注释后编辑:WP7不支持样式触发器。但是,如果有人在以下版本中寻找这个答案,我会在下面给出答复:


我会使用一个样式触发器来动态更新icon Source属性,作为DataTemplate样式的一部分,这样你就可以控制你的图像了。

我发现有一种方法是基于但没有实现他使用的完全反转控制方法,如下所示

{Binding AppViewModel.SomeProperty, Source={StaticResource ViewModelInstanceLocator}}
创建一个分部类,该类解析为视图模型命名空间下的视图模型实例,例如

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>
最后,要绑定到视图模型,如下所示

{Binding AppViewModel.SomeProperty, Source={StaticResource ViewModelInstanceLocator}}

绑定会照常更新,就像视图模型实例已通过DataContext引用一样。但是,它不适用于设计时数据。

啊,好吧,我的错,我不知道。