任何人都可以提供帮助,失去了很多时间试图解决这个问题。
我有一个具有以下属性的ViewModel
public ObservableCollection<ListItem> OpcoList { get; set; }
public ListItem SelectedOpco {
get {
return _selectedOpco;
}
set {
if (_selectedOpco != null && _selectedOpco.Equals(value)) {
return;
}
var oldValue = _selectedOpco;
_selectedOpco = value;
RaisePropertyChanged("SelectedOpco");
}
在我的XAML中我有
<ListBox Name="listOpco" ItemsSource="{Binding OpcoList}"
SelectionMode="Single" SelectedItem="{Binding Mode=TwoWay, Path=SelectedOpco}">
但每当我在我的VM中为SelectedOpco设置一些值时,它就不会在ListBox中显示为选中。
有什么想法吗?提前谢谢!
答案 0 :(得分:0)
你可以尝试一些事情:
将setter简化为更简单的东西(它应该按照您的意图执行 - 检查是否选择了列表的其他元素)。
set {
if(_selectedOpco != value) {
_selectedOpco = value;
RaisePropertyChanged("SelectedOpco");
}
}
在RaisePropertyChanged("SelectedOpco");
行放置一个断点,看看执行是否在那里。如果是,请检查班级是否真的标记为INotifyPropertyChanged
。
if(!(this is INotifyPropertyChanged))
throw new Exception("Not INotifyPropertyChanged");
尝试使用以下值设置值:
SelectedOpco = OpcoList.FirstOrDefault(); // LastOrDefault