WP7] [MVVM Light Toolkit] Button Comando levantado muito cedo, antes de se ligar ao usar o MVVM-Light Toolkit

StackOverflow https://stackoverflow.com/questions/4012450

  •  26-09-2019
  •  | 
  •  

Pergunta

Estou usando o kit de ferramentas MVVM-Light no meu aplicativo Windows Phone 7.

Eu tenho na minha opinião:

<TextBox Height="78" HorizontalAlignment="Left" Margin="108,33,0,0" VerticalAlignment="Top" Width="313" Text="{Binding MyValue, Mode=TwoWay}" />
<Button Content="Go" Height="78" HorizontalAlignment="Left" Margin="127,252,0,0" Name="button1" VerticalAlignment="Top" Width="213" cmd:ButtonBaseExtensions.Command="{Binding DoCommand}"  />

Meu modelo de visão é:

    public class MainPageViewModel : ViewModelBase
    {
        public ICommand DoCommand { get; internal set; }
    public MainPageViewModel()
    {
        DoCommand = new RelayCommand(() =>
            {
                DoSomethingWith(MyValue);
            }, () => true);

    }

    private const string MyValuePropertyName = "MyValue";
    private string _myValue;
    public string MyValue
    {
        get { return _myValue; }
        set
        {
            if (_myValue == value)
                return;
            _myValue = value;
            RaisePropertyChanged(MyValuePropertyName);
        }
    }
}

No emulador, quando digito valor na caixa de texto e clico no botão, vejo que estou indo primeiro na expressão do RelrayCommand Lambda e com um ponto de interrupção, vejo que o MyValue é nulo. Em seguida, o ponto de interrupção no setter do MyValue é atingido e o valor correto vai no MyValue.

O que estou fazendo errado ? Claro, eu gostaria que o levantador possa ser alcançado antes do relayCommand ...

Agradecemos antecipadamente por qualquer ajuda.

Foi útil?

Solução

É possível que você tenha atingido o problema do banco de dados do TextBox com o evento TextChanged. Este é um problema reconhecido em Silverlight 3, Veja este tópico discutindo esta questão e a solução alternativa. Uma solução interessante talvez seja usar comportamentos como discutido em Este artigo.

HTH, Indyfromoz

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top