[WP7] [MVVM Light Toolkit] Bouton de commande soulevé trop tôt, avant de se lier lors de l'utilisation de boîte à outils MVVM-lumière

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

  •  26-09-2019
  •  | 
  •  

Question

J'utilise la boîte à outils MVVM-lumière dans mes fenêtres téléphone application 7.

J'ai à mon avis:

<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}"  />

Mon modèle de vue est le suivant:

    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);
        }
    }
}

Dans l'émulateur, lorsque je tape la valeur dans la zone de texte, et je clique sur le bouton, je peux voir que je vais d'abord dans l'expression lambda RelayCommand et avec un point d'arrêt Je vois que MyValue est nulle. Ensuite, le point d'arrêt dans le poseur de MyValue est atteinte, et la valeur correcte va dans MyValue.

Qu'est-ce que je fais mal? Bien sûr, je voudrais que le poseur peut être atteint avant la RelayCommand ...

Merci d'avance pour toute aide.

Était-ce utile?

La solution

Il est possible que vous avez touché la question TextBox DataBinding à l'événement TextChanged. Ceci est un problème reconnu dans Silverlight 3, voir ce fil discuter de cette question et la solution de contournement. Une solution intéressante est peut-être d'utiliser des comportements comme indiqué dans cet article .

HTH, indyfromoz

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top