WPF无法在后面的代码中更新组合框值



我想更新以下组合框选定项:

<ComboBox ItemsSource="{Binding Path=DictUsers, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Key" SelectedValuePath="Value" SelectionChanged="ComboUser_SelectionChanged" SelectedValue="{Binding Edit.ProtLevel, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />

ItemsSource, DictUsers,来自字典:

DictUsers = new Dictionary<string, int>();
DictUsers.Add(string.Empty, 0); 
foreach (cUser user in App.Users)
DictUsers.Add(user.Name, user.ShowLevel);

我不能直接访问ComboBox,因为它在一个数据模板内,所以我想更新绑定值(Edit.ProtLevel):

// Test
Edit.ProtLevel = 5;

但是组合框本身不会更新,这意味着选中的项目不会改变。怎么了?

为使您的绑定正常工作,绑定属性应该是DependencyProperty或在实现INotifyPropertyChanged的类中,像这样的东西应该工作:

public class Edit : INotifyPropertyChanged {
private int _protLevel;
public int ProtLevel {
get => _protLevel;
set {
if (_protLevel != (_protLevel = value)) {
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(ProtLevel)));
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}

你可以在这里阅读绑定文档。

和一个简单的INotifyPropertyChanged实现。

最新更新