J'ai un comportement étrange quand j'associe et combobox à mon viewmodel. Le comportement est le suivant, quand je change la valeur choisie du combo je fais une validation de la nouvelle valeur et si cette nouvelle valeur est invalide je garde l'ancienne valeur et rejette la nouvelle, de cette façon je n'élève pas le Inotifypropertychanged, mais le getter de la propriété associée à la combobox est appel quand même, cela récupère l'ancienne valeur que je veux montrer, mais à la place la combobox montre la nouvelle valeur, même si la valeur sélectionnée du combo est la valeur ancienne et correcte, J'ai vérifié en mode débogage. Je ne sais pas comment je peux résoudre cela parce que je n'ai jamais vu ce genre de comportement, toutes les suggestions seraient très appréciées.WPF ComboBox MVVM comportement étrange
C'est le code du XAML
<ComboBox Height="23" Name="cbxStatus" HorizontalAlignment="Left"
ItemsSource="{Binding Path=Status, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding Path=SelectedStatus, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Value" Width="130" VerticalAlignment="Center"
IsEnabled="{Binding Path=StatusEnable, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
c'est le code viewmodel, la propriété
public Config SelectedStatus
{
get
{
if (ApplicationAction == ApplicationAction.Add)
{
base.Object.State = configManager.BudgetInitStatus();
StatusEnable = false;
}
else
{
StatusEnable = true;
}
return base.Object.State;
}
set
{
if (base.Service.CanChangeBudgetStatus(base.Object, value))
{
base.Object.State = value;
base.Object.IsDirty = true;
}
RaiseOnPropertyChanged("SelectedStatus");
RaiseOnPropertyChanged("AssociateOrderButtonVisibility");
}
}
Merci pour l'aide
Salut merci à la fois pour les réponses, j'ai essayé les deux possibilités et aussi combiné les deux mais dans mon cas c'était celui qui a fonctionné, bien que je pense que les deux sont un peu hacky, je ne comprends pas pourquoi celui-ci fonctionne, J'ai lu dans msdn que c'est juste pour obtenir une propriété plus tard dans le processus de liaison, pour ainsi dire. Je pense que combobox devrait être "intelligent" assez pour voir que quand la propriété selecteditem est "notifiée" est devrait montrer cette valeur et non celle précédemment choisie ...mais c'est mon opinion. Merci encore une fois pour l'aide –