有Observable集合绑定到组合框。
public ObservableCollection<AnyType> AnyTemplates { get; set; }
与此集合绑定的组合框:
<ComboBox Name="cmbKeyA"
Width="100"
SelectedValue="{Binding Path=KeyAName}"
ItemsSource="{Binding Path=DataContext.KeyTemplates, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
DisplayMemberPath="Name"
SelectedValuePath="Name"/>
第一个收集是空的。然后当我在集合中添加新值时,checkBox selectedItem会更改为此值。如果我更改集合Item中的Name属性,则更改组合框selectedItem(我看到DisplayMemberPath更改为新值),但选择值不会更改,直到我再次手动选择此项目。 Name属性集合元素调用PropertyChanged事件。 为什么这不起作用。
总结:当我在comboxo SelectedItem programicaly中更改NameProperty时,组合框SelectedItem被更改,但SelectedValue不会更新,直到我再次在组合框中更改它。
答案 0 :(得分:0)
尝试使用ComboBox的ItemStyle容器,使其如下所示:
<ComboBox Name="cmbKeyA"
Width="100"
SelectedValue="{Binding Path=KeyAName}"
ItemsSource="{Binding AnyTemplates}"
DisplayMemberPath="Name"
SelectedValuePath="Name">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="IsSelected" Value="{Binding Path=IsCurrent, Mode=TwoWay}"/>
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>
此外,请确保已使用NotifyPropertyChanged完成所有操作并设置DataContext。另一件事是确保首先在加载视图模型中设置初始值,然后只更改SelectedItem。