当ItemsSource更改时,Silverlight 4 ComboBox SelectedValue无效

时间:2010-11-24 04:36:35

标签: silverlight mvvm

我在ViewModel类,EmployeeList和Employee中有2个属性。 EmployeeList是动态属性,可以说,此属性可以在运行时更改。 ViewModel类的源代码如下:

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

View已将其ItemsSourceSelectedValue属性分别设置为EmployeeList和Employee。

ItemsSource="{Binding EmployeeList, Mode=TwoWay}"
SelectedValue="{Binding Employee, Mode=TwoWay}"

Everythings工作正常,但EmployeeList已更改且EmployeeList中不存在Employee,下面是方案步骤。

  1. EmployeeList有2名员工,先生。一个先生。 B 和SelectedValue 先生。 A
  2. EmployeeList已更改为先生。 B 先生。 C ,在此时间之后,SelectedValue不再起作用。如果我在ViewModel和NotifyPropertyChanged上设置Employee,这个值将不会在UI上更新,或者如果我从UI中选择新的Employee,这个值将不会在ViewModel上更新,底线是View,ViewModel已断开,因为EmployeeList已更改且Employee没有存在于该清单中。
  3. 我想知道如何解决这些问题?

3 个答案:

答案 0 :(得分:2)

我猜你必须像下面那样绑定组合框:

<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>

答案 1 :(得分:0)

我也遇到Silverlight 4 ComboBox和SelectedValue绑定的主要问题。奇怪的是,使用SelectedItem进行绑定非常有效,但这并不总是可行,尤其是在使用域对象和FK Id类型查找时。

在CSLA论坛上查看我的帖子 - 它在使用所选值时解决了大多数时间和绑定问题。

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

希望有所帮助

答案 2 :(得分:0)

我可以通过Silverlight ComboBox Sample for RIA Services的解决方案来解决这个问题。