如何在silverlight mvvm中将文本框值从视图获取到viewmodel?

时间:2012-12-26 07:08:27

标签: silverlight mvvm prism

在我的项目中,我使用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的值。任何帮助..?

1 个答案:

答案 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上管理您的业务。通过这种方式,您可以在其他地方使用您的视图模型。即在您的移动应用程序中。