0

私のプロジェクトでは、MVVM パターンで Silverlight5 を使用しています。私は次のものを持っています:

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

私の見解では、テキストボックスが1つあり、値が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 に取得する方法です。ヘルプ..?

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は私たちのエンティティであると思われるかもしれません。

したがって、DataGrid、TextBlock、およびその他の視覚要素に対してDataContextのバインディングを使用し、viewModelでビジネスを管理する必要があります。このようにして、ビューモデルを別の場所で使用できます。つまり、モバイルアプリで。

于 2012-12-26T09:02:42.230 に答える