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 :)

Foi útil?

Solução

Garantir que:

  • DataContext é definido como a instância correta do MainViewModel
  • o MainViewModel implementa a Interface INotifyPropertyChanged
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top