Combobox SelectedItem n'est pas mise à jour lors de la modification de la source d'

J'ai un viewmodel qui mettent en œuvre INotifyPropertyChanged. Sur ce viewModel est une propriété appelée SubGroupingView. Cette propriété est liée à l'élément sélectionné d'une liste déroulante. Lorsque je change la zone de liste déroulante de la propriété source est mis à jour correctement, mais lorsque je change la source de la propriété ou lorsque le contrôle est initialisé, le combobox.selectedItem ne reflète PAS ce qui existe dans la propriété.

Voici un peu de code pour vous aider à démarrer:

<ComboBox Grid.Column="3" Grid.Row="1" 
          Margin="0,1,4,1" 
          SelectedItem="{Binding Path=SubGroupingView, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, diag:PresentationTraceSources.TraceLevel=High}" 
          ItemsSource="{Binding Columns}" 
          DisplayMemberPath="DisplayName">

La propriété soulève la PropertyChanged événement et le TraceSource sortie me montre que la liaison détecté et a transféré la valeur, c'est juste que la zone de liste déroulante n'est pas le refléter. Toute idée est la bienvenue!

EDIT:

sortie à partir de la trace de la source est: est-ce

System.Windows.Data Warning: 91 : BindingExpression (hash=23631369): Got PropertyChanged event from ReportViewModel (hash=52844413)  
System.Windows.Data Warning: 97 : BindingExpression (hash=23631369): GetValue at level 0 from ReportViewModel (hash=52844413) using RuntimePropertyInfo(SubGroupingView):         DataColumnViewModel (hash=58231222)  
System.Windows.Data Warning: 76 : BindingExpression (hash=23631369): TransferValue - got raw value DataColumnViewModel (hash=58231222)  
System.Windows.Data Warning: 80 : BindingExpression (hash=23631369): TransferValue - implicit converter produced DataColumnViewModel (hash=58231222)  
System.Windows.Data Warning: 85 : BindingExpression (hash=23631369): TransferValue - using final value DataColumnViewModel (hash=58231222)  

Voici le code de la propriété source:

public class ReportViewModel : ViewModelBase, IReportTemplate
{
    public DataColumnViewModel SubGroupingView
    {
        get
        {
            return GetViewModel(_report.SubGrouping);
        }
        set
        {
            if (_report.SubGrouping == value.ColumnName)
                return;
            _report.SubGrouping = value.ColumnName;
            RefreshDataSeries();
            base.OnPropertyChanged("SubGroupingView");
            base.OnPropertyChanged("IsReady");
        }

    }
}

Remarque: ViewModelBase implémente INotifyPropertyChange.

RÉPONSE

J'ai surchargé l' ==, != les opérateurs, GetHashCode(), et Equals(object) et maintenant il fonctionne parfaitement. Merci à tous pour votre aide!

D'intérêt, essayez de définir le ItemsSource avant la SelectedItem dans votre déclaration XAML.
R u me traque matt? pas de chance, il y
Intéressant... pourriez-vous éventuellement poster un extrait de votre ViewModel (plus précisément la définition de SubGroupingView)?
Attaché à modifier
Comment voulez-vous modifier la source de la propriété? Est-ce vraiment l'objet de la liste, pas une copie?

OriginalL'auteur TerrorAustralis | 2010-08-17