2010-11-24 94 views
1

我在ViewModel類,EmployeeList和Employee中有2個屬性。 EmployeeList是動態屬性,也就是說,該屬性可以在運行時更改。 ViewModel類的源代碼低於:當ItemsSource發生變化時Silverlight 4組合框SelectedValue不工作

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

查看已分別設置其ItemsSourceSelectedValue財產EmployeeList的和員工。

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

除了EmployeeList已更改以及EmployeeList中不存在Employee,方案的步驟如下所述,Everythings的工作良好。

  1. EmployeeList的有2個僱員,A先生乙先生和的SelectedValue是A先生
  2. EmployeeList的已更改爲乙先生C君,後這次SelectedValue不再工作。如果我在ViewModel和NotifyPropertyChanged上設置Employee,則此值不會在UI上更新,或者如果我從UI中選擇新的Employee,則此值不會在ViewModel上更新,底線是View和ViewModel已斷開連接,因爲EmployeeList已更改且Employee不存在於該列表中。

我想知道如何解決這些問題?

回答

0

我也有Silverlight 4組合框和SelectedValue綁定的主要問題。奇怪的是,使用SelectedItem進行綁定工作得很好,但這並不總是可行的,特別是在使用域對象和FK Id類型查找時。

看看我在CSLA論壇上發表的文章 - 它解決了使用選定值時的大多數時間和綁定問題。

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

希望幫助

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> 
相關問題