【发布时间】:2015-11-09 18:16:45
【问题描述】:
我不明白为什么当我在另一个组合框中进行选择时我的组合框没有更新。我对 MVVM 仍然很陌生,但理论上我的代码应该可以工作。我可以在表单加载时填充组合,但我需要用新值刷新组合,这不起作用。我可以看到它检索新值,但它从未在表单上显示它们。
我的 XAML 如下所示:
<ComboBox Grid.Column="1" ItemsSource="{Binding Path=Vendors}" SelectedItem="{Binding SelectedVendor, Mode=TwoWay}" HorizontalAlignment="Left" Margin="24,12,0,11" Grid.Row="3" VerticalAlignment="Center" Width="293" />
<ComboBox x:Name="VendorProductServiceCB" HorizontalAlignment="Left" Margin="20.6,16.2,0,55.4" VerticalAlignment="Center" Width="293" Grid.Row="7" Grid.Column="1" ItemsSource="{Binding Path=VendorProductServices, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Name" SelectedItem="{Binding Path=SelectedVendorProductService, Mode=TwoWay}" Height="22"/>
我的 ViewModel 代码是这样的:
public ObservableCollection<string> Vendors { get; set; }
public ObservableCollection<VendorProductService> VendorProductServices { get; private set; }
public VendorProductService SelectedVendorProductService
{
get { return _selectedVendorProductService; }
set { SetProperty(ref _selectedVendorProductService, value); }
}
public string SelectedVendor
{
get { return _selectedVendor; }
set
{
SetProperty(ref _selectedVendor, value);
SelectionChangedCommand.Execute(this);
}
}
public FormSelectionViewModel()
{
Vendors = new ObservableCollection<string>(FetchVendors());
VendorProductServices = new ObservableCollection<VendorProductService>(FetchVendorProductServices(_selectedVendor));
SelectionChangedCommand = new DelegateCommand(SelectionChanged);
}
public void SelectionChanged()
{
VendorProductServices = new ObservableCollection<VendorProductService>(FetchVendorProductServices(_selectedVendor));
}
【问题讨论】: