No meu projeto eu estou usando o Silverlight5 com padrão MVVM. Eu tenho o seguinte:
View : Manager.xaml
Code-Behind : Manager.Xaml.cs
ViewModel : ManagerViewModel.cs
na minha opinião eu tenho uma caixa de texto e eu tenho atribuído o valor é 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;
}
}
Aqui a minha pergunta é como eu tenho que obter o valor que é atribuído na caixa de texto de vista para ViewModel. Qualquer ajuda..?
Respostas:
0 para resposta № 1Pelo que entendi do seu código.
ManageViewModel vm = DataContext as ManageViewModel;
seu DataContext é ManageViewModel, então você deve usar este contexto ...
< TextBox Name="gid" Text={Binding MyTextPropertyInMyViewModel}
Visibility="Collapsed" why ? />
Seu comando delegate também está em ViewModel para que você possa usar MyTextPropertyInMyViewModel em seu modelo de visualização facilmente.
Se você usar o MVVM, isso significa que você usa um DataContext (ou pode ser um recurso). Você deve usá-lo para origens de elementos de interface do usuário e também para Commanding.
Dessa forma, você separa os negócios e a interface do usuário. ViewModel "s são nossos objetos de negócios, e você pode pensar que os Model" s são nossas entidades.
Então você deve usar ligações sobre seu DataContextpara seus DataGrid, TextBlock e outros elementos visuais e gerencie seu negócio em seu viewModel. Desta forma você pode usar seu modelo de visão em outro lugar. Por exemplo, no seu aplicativo para dispositivos móveis.