c# - 正确更新 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}"
解决方案
简单的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)));
}
}
}
推荐阅读
- jquery - 在jquery中将值推入数组后如何从数组中获取元素值?
- gremlin - 使用 writeGraph() 将 Tinkerpop 图导出到不同的 OutputStream
- css - 材质 UI - 覆盖 MakeStyles
- java - 在微调器选项上运行 if 语句时 Android 应用程序崩溃
- git - SourceTree 推送失败
- reactjs - 使用 reactjs 导入时,fabricjs 出错
- javascript - 将 Javascript 转换为 Objective C(数字的后 4 位)
- php - SQLSTATE[HY000] [2002] 没有这样的文件或目录。我知道有这样的问题。但他们没有帮助
- javascript - 如何在firebase云函数打字稿中解析json对象
- html - 如何为感叹号添加颜色?