在WPF和Silverlight中,您可以创建一个视图模型对象,并在运行时构造控件时将其设置为控件的DataContext。然后,您可以将可视对象的属性绑定到DataContext中的属性。
设置绑定的一种方法是直接在标记中键入绑定:
<TextBox Text="{Binding Path=Description}"/>
这会将文本框绑定到视图模型中的Description属性。
键入绑定的问题是您可能会输入错误。 (如果你有数百个绑定,你几乎肯定会犯错。)
在Expression Blend中,“属性”窗口中的Text属性旁边有一个小白点。这将打开一个菜单,您可以从中创建数据绑定。
答案 0 :(得分:1)
一种技术是将VM作为资源包含在您的视图中:
<UserControl>
<UserControl.Resources>
<local:YourViewModel x:Key="ViewModel"/>
</UserControl.Resources>
</UserControl>
然后,您可以在其他位置引用DataContext="{StaticResource ViewModel}"
。
不能说我喜欢它,但我不能说我喜欢Blend对你的设计施加的任何视图优先特性。
答案 1 :(得分:1)
我尝试使用Blend来找到数据绑定的拖放方法,这仍然可以让您轻松地在代码中覆盖视图模型。
在我的实验中,我发现将数据源首先绑定到我想要的位置很重要,否则如果我没有先完成下一步,Blend可能会使配置不是最佳配置。
现在已经创建了数据源,数据绑定非常容易。
现在,您可以在控件的构造函数中创建实时视图模型对象
public MainPage()
{
// Required to initialize variables
InitializeComponent();
mVm = new MyViewModel();
this.DataContext = mVm;
}
private MyViewModel mVm;
添加任何初始化以检索数据,您就可以开始了。
答案 2 :(得分:1)
我的博客Blendable MVVM : Introduction and Databinding上有一个屏幕投射,显示为Siverlight设置了这个。
基本上,您使用“New Object Initialiser”创建ViewModel作为UserControl的DataContext,然后使用Binding对话框的“Explicit Data Context”选项卡为控件本身。
希望这有帮助。