2010-11-24 4 views
1

J'ai 2 propriétés dans la classe ViewModel, EmployeeList et Employee. EmployeeList est une propriété dynamique, cela étant dit, cette propriété peut changer au moment de l'exécution. ViewModel code source de la classe est inférieure à:Silverlight 4 ComboBox SelectedValue ne fonctionne pas lorsque ItemsSource a été modifié

public class SampleViewModel 
{ 
    public ObservableCollection<Employee> EmployeeList { get; set; } 
    public Employee { get { ... } set { ... } } 
} 

View a mis sa propriété ItemsSource et SelectedValue à ListeEmployes et les employés respectivement. Tout fonctionne bien sauf que EmployeeList a changé et Employee n'existe pas dans EmployeeList, l'étape des scénarios est ci-dessous.

  1. ListeEmployes a 2 employé, M. A et M. B et SelectedValue est M. A
  2. ListeEmployes a changé à M. B et M. C, après cette fois, SelectedValue ne fonctionne plus. Si je mets Employee sur ViewModel et NotifyPropertyChanged cette valeur ne sera pas mise à jour sur UI ou si j'ai sélectionné new Employee from UI cette valeur ne sera pas mise à jour sur ViewModel, la ligne du bas est View et ViewModel a été déconnecté car EmployeeList a changé exister dans cette liste.

Je veux savoir comment puis-je résoudre ces problèmes?

Répondre

0

J'ai aussi des problèmes majeurs avec les liaisons Silverlight 4 ComboBox et SelectedValue. Etrangement, l'utilisation de SelectedItem pour la liaison fonctionne très bien, mais ce n'est pas toujours possible, en particulier lors de l'utilisation d'objets de domaine et de recherches de type ID FK. Jetez un oeil à mon post sur les forums CSLA - il résout la plupart des problèmes de synchronisation et de liaison lors de l'utilisation de la valeur sélectionnée.

http://forums.lhotka.net/forums/p/9786/45971.aspx

espoir qui aide

2

Je suppose que vous devez lier le combobox comme ci-dessous:

<ComboBox Grid.Row="5" Grid.Column="1" ItemsSource="{Binding Path=Employee,Mode=TwoWay}"> 
    <DataTemplate> 
    <StackPanel> 
     <TextBlock Height="8" HorizontalAlignment="Center" Text="{Binding Path=MR.A}"/> 
     <TextBlock Height="8" HorizontalAlignment="Center" Text="{Binding Path=MR.B}"/> 
    </StackPanel> 
    </DataTemplate> 
</ComboBox> 
Questions connexes