在我的 xaml 页面中,我使用的是图像控件
<Image x:Name="MyImage" Grid.Row="1" Stretch="UniformToFill" Source="{Binding SourceImage}"/>
像这样。我的问题是。是否可以在我的视图模型中访问此控件的属性。“像 MyImage.Source =”。如果是,我如何在 Windows Phone 中实现类似的实现。
在我的 xaml 页面中,我使用的是图像控件
<Image x:Name="MyImage" Grid.Row="1" Stretch="UniformToFill" Source="{Binding SourceImage}"/>
像这样。我的问题是。是否可以在我的视图模型中访问此控件的属性。“像 MyImage.Source =”。如果是,我如何在 Windows Phone 中实现类似的实现。
是的,你可以,但你不应该。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();
}
}