/ / Jak uzyskać wartość texbox z widoku do viewmodel w silverlight mvvm? - silverlight, mvvm, pryzmat

jak uzyskać wartość texbox z widoku do viewmodel w silverlight mvvm? - silverlight, mvvm, pryzmat

W moim projekcie używam Silverlight5 z MVVM Pattern. Mam następujące:

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

w moim widoku mam jedno pole tekstowe i mam przypisaną wartość jest 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;
}
}

Tutaj moje pytanie jest, jak muszę uzyskać wartość, która jest przypisana w polu tekstowym z widoku do ViewModel. Jakaś pomoc..?

Odpowiedzi:

0 dla odpowiedzi № 1

Jak rozumiem z twojego kodu.

ManageViewModel vm = DataContext as ManageViewModel;

twój DataContext to ManageViewModel, więc powinieneś użyć tego kontekstu ...

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

Twoje polecenie delegata również znajduje się w ViewModelu, więc możesz łatwo użyć MyTextPropertyInMyViewModel w swoim modelu widoku.

Jeśli używasz MVVM, oznacza to, że używasz DataContext (lub może to być zasób). Powinieneś używać go do źródeł elementów interfejsu użytkownika, a także do Commanding.

W ten sposób oddzielasz biznes i interfejs użytkownika. ViewModel to nasze obiekty biznesowe i możesz myśleć, że Modele są naszymi bytami.

Dlatego powinieneś używać powiązań w swoim DataContextdla twoich DataGrid, TextBlock i innych elementów wizualnych i zarządzaj swoim biznesem na swoim viewModelu. W ten sposób możesz użyć swojego modelu widoku w innym miejscu. W Twojej aplikacji mobilnej.