您好 我是Silverlight和MVVM逻辑的新手,我已经阅读过许多文章,博客等等,但他们解释的许多内容都是关于如何处理数据库操作的。假设我有一个图像控件和按钮,它应该上传文件并以适当的控制方式显示所选图片。 我不知道如何用MVVM模式做到这一点。我不想让你描述如何使用silverlight上传文件,实际问题是我不知道如何在ViewModel类中访问图像控件以设置其源属性。
任何建议都将不胜感激 最诚挚的问候。
答案 0 :(得分:2)
您不在视图模型中访问控件,而是公开属性。
视图又绑定到视图模型公开的属性。在MVVM中,视图的DataContext
设置为视图模型。
查看:
<Window … namespaces, etc. />
<Grid>
<TextBox Text={Binding InputText, Mode=TwoWay}
</Grid>
</Window>
视图模型:
public class MyViewModel : INotifyPropertyChanged
{
string _text = "Enter text here";
public string Text
{
get { return _text; }
set
{
_text = value;
// raise property change notification
}
}
// implement INPC so the view will know when the view-model has changed
}
现在,如果您将视图窗口的DataContext
属性设置为MyViewModel
的实例,则文本框将包含文本“在此处输入文本”,因为其Text
属性为绑定到InputText
属性。如果在文本框中键入其他内容,则视图模型的InputText
属性将更新为该值。