2010-09-25 6 views
1

Je commence à peine à utiliser MVVM Foundation. Je reçoisMVVM Foundation: Échec de l'assertion Erreur: nom de propriété non valide

alt text

mes codes ci-dessous:

StartViewModel

class StartViewModel : ObservableObject 
{ 
    public StartViewModel() { 
     _counter = 0; 
    } 

    public ICommand IncrementCommand 
    { 
     get { return _incrementCommand ?? (_incrementCommand = new RelayCommand(() => ++Counter)); } 
    } 

    protected int Counter { 
     get { return _counter; } 
     set { 
      _counter = value; 
      base.RaisePropertyChanged("Counter"); 
     } 
    } 

    protected int _counter; 
    protected RelayCommand _incrementCommand; 
} 

StartView

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="50*" /> 
     <RowDefinition Height="250*" /> 
    </Grid.RowDefinitions> 
    <Button Content="Increment" Grid.Row="0" Command="{Binding IncrementCommand}" /> 
    <TextBlock Padding="5" Text="{Binding Counter}" Grid.Row="1" /> 
</Grid> 

wh a-t-il tort avec le code? l'erreur apparaît lorsque j'essaie de cliquer sur le bouton Incrément

Répondre

4

changez de base pour cela sur la ligne RaisePropertyChanged.

La classe de base ne dispose pas d'une propriété appelée contre

EDIT: Peut-être parce que vous propriété est protégée non publique

Les commentaires ObservableObject dans MVVM Fondation mentionne qu'il vérifie la propriété publique

+0

je reçois toujours la même erreur. Mais si c'est parce que 'Counter' n'existe pas alors pourquoi dans le projet exemple,' NumberViewModel' peut appeler 'base.RaisePropertyChanged (" Value ");'? –

+0

MERCI! je n'ai remarqué cela! –

+0

Merci. J'ai eu un problème similaire avec l'une de mes propriétés. Le problème était que la propriété était «protégée» au lieu de «publique» –

Questions connexes