我正在使用ComboBox控件,無法從ViewModel的屬性中設置SelectedItem。這裏是控制定義:Silverlight XAML屬性定義Order Matters
<ComboBox x:Name="jobEmployee" Grid.Column="1" Grid.Row="2"
Margin="4" HorizontalAlignment="Left" Width="150"
SelectedItem="{Binding Path=EditingJob.Employee, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}"
ItemsSource="{Binding Path=Employees, Mode=OneWay}"
DisplayMemberPath="FullName"/>
我有另一個工作得很好的Combobox控件。 SelectedItem設置和不設置屬性定義的順序之間的區別。這裏是工作的控制定義:
<ComboBox x:Name="jobEmployee" Grid.Column="1" Grid.Row="2"
Margin="4" HorizontalAlignment="Left" Width="150"
ItemsSource="{Binding Path=Employees, Mode=OneWay}"
SelectedItem="{Binding Path=EditingJob.Employee, Mode=TwoWay, ValidatesOnExceptions=true, NotifyOnValidationError=true}"
DisplayMemberPath="FullName"/>
2之間的區別是,的ItemsSource是的SelectedItem之前的工作其中一個讓我相信定義,在這種情況下,至少,屬性定義順序問題。我是否錯過了某些東西或者是否有其他人發現這是真的?它是否被記錄在任何地方?
在這種情況下,如果首先不存在列表中的項目,則無法選擇列表中的項目是有意義的。在編寫Silverlight XAML時需要注意這一點。也許像Expression Blend這樣的工具可以確保按照正確的順序定義屬性? – DaveB 2009-08-20 17:44:30
@DaveB:我不確定它確實如此,我不得不親自測試這個場景。在我迄今爲止的典型用法中,將數據上下文分配給某個祖先的時間晚於兩個屬性中的任何一個,在這種情況下,分配這些屬性的順序並不重要。 – AnthonyWJones 2009-08-20 21:21:43
指導方針聲明: 「DO允許以任何順序設置屬性,即使這會導致對象的臨時無效狀態。」 https://msdn.microsoft.com/en-us/library/ms229006%28v=vs.110%29.aspx?f = 255&MSPPError = -2147217396 – Wouter 2017-05-29 12:49:42