0

在我的项目中,我使用 Silverlight5 和 MVVM 模式。我有以下内容:

View        : Manager.xaml
Code-Behind : Manager.Xaml.cs
ViewModel   : ManagerViewModel.cs

在我看来,我有一个文本框,我分配的值为 10。

管理器.xaml

<TextBox Name="gid" Visibility="Collapsed" />

管理器.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 分配的值。任何帮助..?

4

1 回答 1

0

正如我从您的代码中了解到的那样。

ManageViewModel vm = DataContext as ManageViewModel;

你的 DataContext 是 ManageViewModel 所以你应该使用这个上下文......

< TextBox Name="gid" Text={Binding MyTextPropertyInMyViewModel} 
  Visibility="Collapsed" why ? />

您的委托命令也在 ViewModel 中,因此您可以轻松地在视图模型中使用 MyTextPropertyInMyViewModel。

如果您使用 MVVM,则意味着您使用 DataContext(或者它可以是资源)。您应该将它用于 UI 元素源和命令。

通过这种方式,您可以将业务和 UI 分开。ViewModel 是我们的业务对象,您可能认为 Model 是我们的实体。

因此,您应该在 DataContext 上为 DataGrid、TextBlock 和其他可视元素使用绑定,并在 viewModel 上管理您的业务。通过这种方式,您可以在其他地方使用您的视图模型。即在您的移动应用程序中。

于 2012-12-26T09:02:42.230 回答