这是我ComboBox
在 XAML 中实例化的
<Combobox ItemsSource="{Binding Path=Delimiters}" DisplayMemberPath="Key"
SelectedValue="{Binding Path=SelectedDelimiter, UpdateSourceTrigger=PropertyChanged}" />
这是视图模型中的相应绑定,并Dictionary
在构造函数中填充:
private IDictionary<string,string> _delimiters;
public IDictionary<string,string> Delimiters
{
get{return _delimiters;}
set{_delimiters = value; RaisePropertyChanged("Delimiters");}
}
private KeyValuePair <string, string> _selectedDelimiter;
public KeyValuePair <string, string> SelectedDelimiter
{
get{return _selectedDelimiter;}
set{
if(value.Key != _selectedDelimiter.Key || value.Value != _selectedDelimiter.Value)
{
var prevDelimiter = _selectedDelimiter;
_selectedDelimiter = value;
if(IllegalDelimiter.Contains(_selectedDelimiter)
{
MessageBox.Show("errror", "error");
_selectedDelmiter = prevDelimiter;
}
RaisePropertyChanged("SelectedDelimiter");
}
}
}
我无法将所选值绑定回来。Dictionary
正在绑定,当我对 UI 进行更改时,ComboBox
设置被正确触发。在检查其是否为非法定界符的 if 语句中,它确实将所选值设置回其在后面代码中的原始值,但它不会填充到ComboBox
UI(我看到 get 访问器从 UI 触发)。它的类似设置SelectedValue
并没有真正对 UI 做任何事情。
如果有人能指出我正确的方向?