在我的项目中,我使用Silverlight5和MVVM Pattern。 我有以下内容:
View : Manager.xaml
Code-Behind : Manager.Xaml.cs
ViewModel : ManagerViewModel.cs
在我看来,我有一个文本框,我已经指定了值为10。
Manager.xaml
<TextBox Name="gid" Visibility="Collapsed" />
Manager.xaml.cs
gid.Text=(((TextBlock)DG.Columns[5].GetCellContent(DG.SelectedItem)).Text);
ManageViewModel vm = DataContext as ManageViewModel;
if (vm != null)
{
vm.EditCommand.Execute();
}
ManagerViewModel.cs:
private DelegateCommand _editCommand;
public DelegateCommand EditCommand
{
get
{
if (_editCommand == null)
_editCommand = new DelegateCommand(() =>
{
**//Here i need to get the value that is assigned in the textbox.**
ANCViewModel.Show();
});
return _editCommand;
}
}
这里我的问题是如何获取文本框中从视图分配给ViewModel的值。任何帮助..?
答案 0 :(得分:0)
据我所知,你的代码。
ManageViewModel vm = DataContext as ManageViewModel;
您的DataContext是ManageViewModel,因此您应该使用此上下文...
< TextBox Name="gid" Text={Binding MyTextPropertyInMyViewModel}
Visibility="Collapsed" why ? />
您的委托命令也在ViewModel中,因此您可以轻松地在视图模型中使用MyTextPropertyInMyViewModel。
如果您使用MVVM,则意味着您使用DataContext(或者它可以是资源)。您应该将它用于UI元素源以及命令。
通过这种方式,您可以分离Business和UI。 ViewModel是我们的业务对象,您可能认为Model是我们的实体。
因此,您应该对DataConrid,TextBlock和其他可视元素使用DataContext上的绑定,并在viewModel上管理您的业务。通过这种方式,您可以在其他地方使用您的视图模型。即在您的移动应用程序中。