MVVM atualização de vista elemento
-
20-12-2019 - |
Pergunta
Eu tenho um aplicativo seguir o MVVM esquema.Onde eu tenho várias e viewmodels.No meu mainPage eu tenho um textblock que eu gostaria de atualização com informações do escolhido elementos.
Ao iniciar o aplicativo eu inserir um valor de mainviewmodel para testar a ligação assim que as coisas funcionam aqui.Onde o código é o seguinte:
<TextBlock Text="{Binding colorOfElement}" Grid.Row="1"/>
Código mainviewmodel
private string _colorOfElement;
public string colorOfElement
{
get
{
return _colorOfElement;
}
set
{
_colorOfElement = value;
NotifyPropertyChanged("colorOfElement");
}
}
......
colorOfElement = "Test";
Este é exibida corretamente.Quando um usuário interage com um elemento de um evento é acionado dentro da nova viewmodel, aqui eu tenho uma referência para o mainviewmodel, para que eu possa atualizar a cadeia de colorOfElement.
private MainViewModel mv;
......
public void MouseDown(ManipulationStartedEventArgs obj)
{
FrameworkElement MovingElement = (FrameworkElement)obj.OriginalSource;
Canvas canvas = FindParentOfType<Canvas>(MovingGear);
obj.ManipulationContainer = canvas;
obj.Handled = true;
testViewModel viewModel = (testViewModel)MovingElement.DataContext;
mv.colorOfElement = viewModel.model.Color;
}
quando esta função executa estou a enviar para o mainviewmodel e NotifyPropertyChanged é acionado.Mas sobre a Aplicação.Página que mostra o modo de exibição que eu não posso ver qualquer atualização da variável, mas no código da mudança da variável.Alguma idéia para este enlace problema?
Responder Como eu já tinha testado o datacontext e tudo estava funcionando o problema estava na minha classe pública.
public class MainViewModel : ViewModelBase
Aqui deve incluir a interface INotifyPropertyChanged para ativar o recurso.Então, a solução é simples para adicionar este e obter:
public class MainViewModel : ViewModelBase, INotifyPropertyChanged
Em seguida, você é bom para ir :)
Solução
Garantir que:
- DataContext é definido como a instância correta do MainViewModel
- o MainViewModel implementa a Interface INotifyPropertyChanged