1

在我的 xaml 页面中,我使用的是图像控件

<Image x:Name="MyImage" Grid.Row="1" Stretch="UniformToFill" Source="{Binding SourceImage}"/>

像这样。我的问题是。是否可以在我的视图模型中访问此控件的属性。“像 MyImage.Source =”。如果是,我如何在 Windows Phone 中实现类似的实现。

4

1 回答 1

1

是的,你可以,但你不应该。ViewModel 的全部目的是将逻辑分离到自己的类中,而不是将其与视图代码混合。

而是使用INotifyPropertyChanged界面通知 UI 图像源已更改。如果可能,请尝试查看是否可以对要使用的值使用常规绑定,这将是最健壮和最简单的方法。

另一种解决方案是在视图上公开一个界面。之类IView的,你大概可以想出一个更合适的名字之类的IResetable

interface IResetable
{
    void Reset();
}
class MainWindow: Window, IResetable
{
    publiv void Reset()
    {
        // Here you can access the view, but try to keep logic minimal.
    }
}    
class ViewModel
{
    private readonly IResetable resetable;
    public ViewModel(IResetable resetable)
    {
         _resetable = resetable;
    }
    void Foobar()        
    {
         _resetable.Reset();
    }

}
于 2013-04-10T11:26:37.917 回答