首页 > 解决方案 > 正确更新 MVVM 中的 ComboBox 选定项

问题描述

鉴于下面的 ViewModel 代码 -cmbxFields绑定到 ComboBox ItemSource,绑定到所选项目 - 在我导航离开并返回视图 ( )SelectedcmbxField之前,ComboBox 所选项目不会更新。Page在 MVVM 中执行此操作以立即更新 ComboBox 的正确方法是什么?

public ObservableCollection<string> cmbxFields { get; set; } = new ObservableCollection<string>();
public string SelectedCmbxField { get; set; }

private async Task LoadWorkspaceFields()
{
    cmbxFields.Clear();
    foreach (var curField in availableFields.OrderBy(x =>x.Name).Select(x => x.Name))
    {
        cmbxFields.Add(curField);
    }

    SelectedCmbxField = cmbxFields.FirstOrDefault(x => x.StartsWith("Some Text"));
}

我在我的 ComboBox XAML 上尝试了以下操作-

SelectedItem="{Binding SelectedcmbxField, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

标签: c#mvvm

解决方案


简单的INotifyPropertyChanged实现示例:

public class MyClass : INotifyPropertyChanged
{
  private int intValue;

  public event PropertyChangedEventHandler PropertyChanged;

  public int MyIntValue
  {
    get => intValue;
    set
    {
      intValue = value;
       PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(MyIntValue)));
    }
  }
}

推荐阅读